XFIG(1) XFIG(1)
NAME
xfig - Facility for Interactive Generation of figures
under X11
SYNOPSIS
xfig [options] [file]
DESCRIPTION
Xfig is a menu-driven tool that allows the user to draw
and manipulate objects interactively in an X window. It
runs under X version 11 release 4 or higher and requires a
three-button mouse. file specifies the name of a file to
be edited. The description of objects in the file will be
read at the start of xfig.
The TransFig package is used to print the output from
xfig.
Note for previous xfig users:
The f2p and f2ps translators have been phased out because
the TransFig package from Micah Beck is a more general
purpose translator for more graphics languages. The
TransFig package can be used as a back-end processor to
xfig to produce various types of output:
LaTeX - fig2dev -L latex translates xfig to LaTeX pic-
ture environment commands which can be pro-
cessed along with other LaTeX commands.
Postscript -
fig2dev -L ps produces a PostScript output.
Pic - fig2dev -L pic produces a pic output.
PiCTeX - fig2dev -L pictex produces PiCTeX output.
This contains macros that can be used with the
PiCTeX environment under TeX or LaTeX.
Others - fig2dev has options for these other languages:
box, epic, eepic, and eepicemu.
The TransFig package is available from the contributed
software on the distribution tapes of X11 Release 5 from
MIT and from ftp.cs.cornell.edu (directory /pub/fig) and
sun.soe.clarkson.edu (directory /pub/transfig) via anony-
mous ftp. It is also available by mail from the Clarkson
archive server. To find out about using the server, send
the one-line message "help" to archive-
server@sun.soe.clarkson.edu.
Note: TransFig versions 2.1.4 and later support color out-
put for PostScript.
Release 2.1.3 (Protocol 2.1) 1
XFIG(1) XFIG(1)
OPTIONS
-ri[ght]
Change the position of the side panel window to the
right of the canvas window (default: left).
-le[ft]
Change the position of the side panel window to the
left of the canvas window.
-mo[nochrome]
Use black and white only.
-L[andscape]
Make xfig come up in landscape mode (10" x 8").
This is the default.
-P[ortrait]
Make xfig come up in portrait mode (8" x 9").
-pw[idth] units
Make xfig come up units wide (where units are
either cm or in).
-ph[eight] units
Make xfig come up units high (where units are
either cm or in).
-tr[ack]
Turn on cursor (mouse) tracking arrows (default).
-not[rack]
Turn off cursor (mouse) tracking arrows.
-inc[hes]
Make inches the unit of choice (default).
-me[tric]
Make centimeters the unit of choice.
-inv[verse]
Use inverse video (white on black).
-fg color
Use color as the foreground color and default color
for objects. -bg color Use color as the background
color for the canvas and buttons.
-de[bug]
Turn on debugging mode. Prints various debugging
messages like font names etc.
-nor[mal] font
Cause the font used for the message panel and ruler
numbers to be font. This font is also used on the
Release 2.1.3 (Protocol 2.1) 2
XFIG(1) XFIG(1)
canvas when the selected font is not available in
an X11 font (default = fixed).
-bu[tton] font
Cause the font used for most buttons to be font
(default = 6x13).
-bol[d] font
Cause the font used for displaying confirmation
messages to be font (default = 8x13bold).
-startf[ontsize] pointsize
Set the default font size for text objects (default
= 12pt).
-startp[sFont] font
Set the starting font name for Postscript fonts.
-startl[atexFont] font
Set the starting font name for LaTeX fonts.
-sh[owallbuttons]
Show all the xfig indicator buttons instead of only
those relevant to the current drawing mode. Nor-
mally, the buttons line width, area-fill, grid
mode, text size, etc. are only visible when they
are relevant to the current drawing mode. The
-showallbuttons option makes all of the indicator
buttons visible at all times. This takes up more
screen real estate, but allows the user to see all
settable parameters.
-internalBW width
Use lines of width width between all buttons and
panels (default = 1).
-lat[exfonts]
Start xfig with LaTeX font selection. Normally,
the PostScript fonts are available as the default.
This flag selects the LaTeX fonts to start.
-sp[ecialtext]
Start xfig with the special text mode for text
objects.
-sc[alablefonts]
Allows use of the X11R5 scalable fonts.
-k[eyFile] compose-key-file
Use compose-key-file instead of CompKeyDB for com-
pose key database. This file must be in the xfig
libarary directory, usually /usr/local/lib/xfig.
Release 2.1.3 (Protocol 2.1) 3
XFIG(1) XFIG(1)
GRAPHICAL OBJECTS
The objects in xfig are divided into primitive objects and
compound objects. The primitive objects are: ARC, CIRCLE,
CLOSED SPLINE, ELLIPSE, POLYLINE, POLYGON, ENCAPSULATED
POSTSCRIPT, BOX, ARC-BOX, SPLINE, and TEXT.
A primitive object can be moved, rotated, flipped verti-
cally or horizontally, scaled, copied, aligned within a
compound object or erased. The TEXT primitive may not be
flipped. It may be rotated but only the markers show the
rotation (on-screen). Text IS rotated on PostScript out-
put. The attributes of any primitive object can be edited
using a popup panel (discussed below), so you can, for
instance, set the position of an object manually.
A compound object is composed of primitive objects. The
primitive objects that constitute a compound can not be
individually modified, but they can be manipulated as an
entity; a compound can be moved, rotated, flipped verti-
cally or horizontally, scaled, copied or erased. A com-
pound that contains any boxes, arc-boxes, ellipses or cir-
cles may only be rotated by 90 degrees.
Regular polygons may be created using a special drawing
mode, but a general POLYGON is created as a result, which
may then be modified, i.e. the individual vertices may be
moved if desired.
DISPLAY WINDOWS
Nine regions comprise the display area of xfig: the com-
mand region, top ruler, side ruler, drawing mode region,
editing mode region, message region, indicator region with
buttons to set and show current line thickness, line
style, color, area-fill gray color and several other set-
tings, mouse function indicator region and canvas region.
(The mouse function indicator region was inspired by the
UPS debugger from the University of Kent.) The drawing
and editing mode regions may be placed (together) to the
left or right of the the canvas window (default: left).
COMMAND PANEL FUNCTIONS
Quit Exit from xfig, discarding the figure. If the fig-
ure has been modified and not saved, the user will
be asked to confirm the action, by clicking the
left button on a confirm/cancel popup menu.
Delete ALL
Delete all objects from the canvas window (may be
undone).
Undo Undo the last object creation, deletion or modifi-
cation.
Redraw Redraw the canvas.
Release 2.1.3 (Protocol 2.1) 4
XFIG(1) XFIG(1)
Paste Paste the object previously copied into the
cut/paste file into the current figure (at its
original position).
File Left mouse button pops up a panel which contains
several file-related functions:
Current Filename
This is a label widget showing the current file-
name. It is automatically updated from the File-
name Ascii widget when the Load operation is exe-
cuted, either by pressing the Load button or press-
ing return in the Filename window.
Filename
This is an editable AsciiTextWidget which contains
the current filename. Pressing return in the File-
name window will Load the file and update the Cur-
rent Filename widget.
(File) Alternatives
Pressing the left mouse button on a filename in the
file alternatives window will select that file by
copying the filename into Filename window.
Filename Mask
A wildcard mask may be typed into this editable
AsciiTextWidget to restrict the search of filenames
to a subset ala the ls command. Pressing return in
this window will automatically rescan the current
directory. This string may be set by setting the
resource *filepanel*mask*string.
Current Directory
This is an editable AsciiTextWidget which shows the
current directory. It may be modified by the user
to manually set a directory name. When return is
pressed in this window the directory specified is
scanned for files matching the Filenamemask, if
any.
The ~ (tilde) character may be used to specify a
user's home directory, ala unix shell tilde expan-
sion.
(Directory) Alternatives
Pressing the left mouse button on a directory name
in the directory alternatives list will do a
"change directory" to that directory.
Pressing the right mouse button in either the file
or Directory Alternatives window will do a "change
directory" to the parent directory.
Release 2.1.3 (Protocol 2.1) 5
XFIG(1) XFIG(1)
Home This button will change the current directory to
the user's home directory.
Rescan This button will rescan the current directory.
Cancel This pops down the file panel without making any
changes to the directory or file name.
Save Save the current contents of the canvas in the file
specified in the File menu item. If the file
already exists a confirmation popup menu will
appear asking the user to confirm or cancel the
save.
Load The current contents of the canvas are cleared and
the figure is read from the filename specified in
the File menu item. This file will become the cur-
rent file. Pressing return in the file name window
will also load the file.
A popup message window will appear and diagnostic
messages will be written if xfig changes any "ille-
gal" object values to legal values. For example,
older versions of xfig were lax about initializing
unused parts such as depth, and would produce very
large, random values. Xfig now will "clean up" bad
values and inform you when it does so. Also, if
you read in an older file format, xfig will inform
you that it is converting it to the current format
for that version of xfig.
This window can be popped down by clicking the
mouse button on the Dismiss button. The messages
will be cleared before reading a new file.
Merge Read
Read figure from the filename specified in the File
menu item and merge it with the figure already
shown on the canvas. The filename in the File will
revert to the previous filename after this function
is completed.
See Load above for a description of the popup mes-
sage window.
Right mouse button invokes Save function without popping
up the file panel.
Export Will let you export the figure to an output file in
one of several formats. Left mouse button pops up
a directory browser widget and a menu with several
export-related functions:
Release 2.1.3 (Protocol 2.1) 6
XFIG(1) XFIG(1)
Magnification
This is an editable AsciiTextWidget which contains
the magnification to use when translating figure to
the output language.
Orientation
This button will toggle the output orientation
between Landscape (horizontal) and Portrait (verti-
cal). The default orientation is the same as the
mode that xfig was started with.
Justification
This window will only be sensitive when the lan-
guage selected is "ps" (PostScript). You may
choose that the figure is flush left or centered in
the output file.
Language
The translation language to use for xfig output
when output is directed to a file. The default is
PostScript. The figure may be saved as an X11
bitmap by choosing Xbitmap as the output language.
The bitmap is created from the figure, the size of
which is determined by the enclosing rectangle of
all the figure plus a small border.
Default Output Filename
This is read-only AsciiTextWidget which contains
the filename that will be used to write output to a
file if there is no name specified in Output File.
The default is the figure name plus an extension
that reflects the output language used.
Output Filename
This is an editable AsciiTextWidget which contains
the filename to use to write output to a file.
Pressing return in this window will Export the
file.
(File) Alternatives
Pressing the left mouse button on a filename in the
file alternatives window will select that file by
copying the filename into Filename window.
Filename Mask
A wildcard mask may be typed into this editable
AsciiTextWidget to restrict the search of filenames
to a subset ala the ls command. Pressing return in
this window will automatically rescan the current
directory. This string may be set by setting the
resource *exportpanel*mask*string.
Current Directory
This is an editable AsciiTextWidget which shows the
Release 2.1.3 (Protocol 2.1) 7
XFIG(1) XFIG(1)
current directory. It may be modified by the user
to manually set a directory name. When return is
pressed in this window the directory specified is
scanned for files matching the Filenamemask, if
any.
The ~ (tilde) character may be used to specify a
user's home directory, ala unix shell tilde expan-
sion.
(Directory) Alternatives
Pressing the left mouse button on a directory name
in the directory alternatives list will do a
"change directory" to that directory.
Pressing the right mouse button in either the file
or Directory Alternatives window will do a "change
directory" to the parent directory.
Home This button will change the current directory to
the user's home directory.
Rescan This button will rescan the current directory.
Cancel This button will pop down the print menu without
doing any print operation.
Export This button writes the figure to the file using the
selected language. If the file already exists, a
confirmation window will popup to ask the user to
confirm the write or cancel. Pressing return in
the Output Filename window will also Export the
file.
Right mouse button invokes Export function without popping
up the export panel.
Print Left mouse button pops up a menu with several
print-related functions:
Magnification
This is an AsciiTextWidget which contains the mag-
nification to use when translating figure to the
output language.
Orientation
This button will toggle the output orientation
between Landscape (horizontal) and Portrait (verti-
cal). The default orientation is the same as the
mode that xfig was started with.
Release 2.1.3 (Protocol 2.1) 8
XFIG(1) XFIG(1)
Justification
This button will bring up a sub-menu from which you
may choose center or flush left to justify the fig-
ure on the page. The default is flush left.
Printer
This is an AsciiTextWidget which contains the
printer to use if output is directed to a printer.
The name of the printer may be set setting the
resource *printer*string.
Cancel This button will pop down the print menu without
doing any print operation.
Print This button sends the figure to the printer. Note
that the figure that is printed is what you see on
the canvas, not necessarily the figure file. I.e.,
if you haven't saved the figure since the last
changes, the figure from the canvas is printed.
Xfig writes the figure to a temporary file to do
this. The name of the file is /tmp/xfig-printPID,
where PID is the process ID of xfig.
Right mouse button invokes Print function without popping
up the print panel.
INDICATOR PANEL COMMAND DESCRIPTIONS
The indicator panel contains buttons to set certain draw-
ing parameters, such as line thickness, canvas grid, rota-
tion angle etc. All of the buttons use the same mouse
buttons for setting values. Pressing the left mouse but-
ton on the indicator will pop up a panel in which either a
value may be typed (e.g. for a line thickness) or the
mouse may be clicked on one of several buttons (e.g. for
grid style or font name). For those that expect a value,
pressing return in the value part of the window will set
the new value and pop down the menu.
Pressing the middle mouse button on an indicator will
decrement the value (e.g. for line thickness) or cycle
through the options in one direction (e.g. font names),
while pressing the right mouse button will increment the
value or cycle through the options in the other direction.
ZOOM SCALE
The canvas zoom scale may be
set/increased/decreased with this button. The zoom
scale is displayed within the zoom button. Ruler,
grid and linewidth are scaled, too. Pressing the
middle button will decrease the zoom factor by 1.0
unless it is less than 1.0 already in which case it
will reduce to the nearest 0.25. Pressing the
Release 2.1.3 (Protocol 2.1) 9
XFIG(1) XFIG(1)
right button will increase the zoom factor by 1.0
unless it is less than 1.0 in which case it will
increase it to the nearest 0.25. Pressing the con-
trol key and the right mouse button together will
set the zoom scale to 1.
The figure may also be zoomed by defining a zoom
rectangle by pressing the control key and left
mouse button together. This will define one corner
of the zoom rectangle. Move the mouse and click
the left button again to define the opposite corner
of the zoom rectangle.
GRID MODE
With this button the user may select no grid, 1/4
inch (5mm in metric mode) grid or 1/2 inch (10mm)
grid.
POINT POSITION
This button controls the coarseness of object
placement on the canvas. The options are arbitrary
placement, 1/16 inch (2mm in metric mode), 1/4 inch
(5mm) or 1/2 inch (10mm). This allows the user to
easily place objects in horizontal or vertical
alignment.
This also restricts which objects may be "picked
up" by the mouse when editing. If a corner of an
object is not positioned on the canvas on a multi-
ple of the point positioning resolution you may not
be able to pick it. If this happens, a black
square will temporarily appear above the mouse cur-
sor. This square will also appear anytime the user
tries to pick a nonexistent object.
ROTATION ANGLE
The rotation angle for rotating objects may be
set/increased/decreased with this button. Note
that not all objects may be rotated, and certain
objects may only be rotated by certain angles.
Pressing the middle or right button will
decrease(increase) the angle in steps of 15
degrees. To select other angles, press the left
button and enter the angle in the popup menu.
DEPTH The depth at which new objects will be created may
be set/increased/decreased with this button.
NUMBER OF POLYGON SIDES
The number of sides used in creating a REGULAR
POLYGON is set with this button.
SMART-LINKS MODE
This button controls the smart-links mode. When
Release 2.1.3 (Protocol 2.1) 10
XFIG(1) XFIG(1)
turned on, lines which link box-like objects
together (henceforth called links) are treated spe-
cially when one of the box-like objects is moved.
When set to MOVE mode, the end point of the link
which touches (or is very near) the perimeter of
the box is moved with the box so that the box and
the end point remain linked. When set to SLIDE
mode, the end segment of the link slides so that
the box remains linked and the angle of the end
segment is maintained. This is useful for keeping
the last segment of a link horizontal or vertical.
(At the moment, this mode only works for the MOVE
and COPY functions and only works for POLYLINE
links and box-like objects. Another limitation at
the moment is that if both ends of a link touch the
box being operated on, only one end of the link
will be adjusted.)
VERTICAL ALIGN
This sets the vertical alignment mode for the ALIGN
button in the editing mode panel. The choices are
no vertical alignment, align to top edge, middle or
bottom edge of compound. The HORIZONTAL ALIGN and
VERTICAL ALIGN indicator settings are used together
to align objects inside a compound.
HORIZONTAL ALIGN
This sets the horizontal alignment mode for the
ALIGN button in the editing mode panel. The
choices are no horizontal alignment, align to left
edge, middle or right edge of compound. The HORI-
ZONTAL ALIGN and VERTICAL ALIGN indicator settings
are used together to align objects inside a com-
pound.
ANGLE GEOMETRY
The following settings are available to restrict
the drawing angle of line segments in POLYLINES,
POLYGONS and SPLINES.
UNRESTRICTED
Allow lines to be drawn with any slope.
LATEX LINE
Allow lines to be drawn only at slopes which can be
handled by LaTeX picture environment lines: slope =
x/y, where x,y are integers in the range [-6,6].
LATEX VECTOR
Allow lines to be drawn only at slopes which can be
handled by LaTeX picture environment vectors: slope
= x/y, where x,y are integers in the range [-4,4].
Release 2.1.3 (Protocol 2.1) 11
XFIG(1) XFIG(1)
MANHATTAN-MOUNTAIN
Allow lines to be drawn in the horizontal, vertical
or diagonal direction only.
MANHATTAN
Enforce drawing of lines in the horizontal and ver-
tical direction only.
MOUNTAIN
Enforce drawing of only diagonal lines.
FILL STYLE
This button allows the user to select the area fill
darkness (grey scale) for all objects except TEXT
and ENCAPSULATED POSTSCRIPT, or to turn off area
fill altogether.
COLOR The user may select one of eight predefined colors
to draw with, or select that the default (-fg)
color is to be used. The eight colors are black,
blue, green, cyan, red, magenta, yellow and white.
Note that TransFig versions 2.1.4 and later support
color output for PostScript. On monochrome screens
the objects are created with the selected color,
but black is used to draw the objects on the can-
vas.
LINE WIDTH
The width of lines may be selected with this but-
ton. Zero width lines may be drawn for the purpose
of having filled areas without outlines.
LINE STYLE
The choices for line style are solid, dashed and
dotted. Once created, a dashed or dotted line may
be edited to change the length of dashes or the
spacing of dots respectively. The dash length and
dot gap can be changed from the default using the
popup menu.
BOX CURVE
The radius of the corners on ARC-BOX objects may be
set with this button.
ARROW MODE
This button selects the auto-arrow mode for drawing
lines. The options are no arrow heads, backward-
pointing arrow head, forward-pointing arrow head or
both. If one or both arrow head modes are turned
on, then arrow heads are automatically drawn when
drawing POLYLINE, SPLINE or ARC objects.
Release 2.1.3 (Protocol 2.1) 12
XFIG(1) XFIG(1)
TEXT JUSTIFICATION
The adjustment of text may be set to left, center
or right justification.
TEXT SIZE
The text size may be set/increased/decreased with
this button.
TEXT STEP
The interline spacing of text may be
set/increased/decreased with this button. The num-
ber displayed gives the multiple of the font height
that will be placed between lines on hitting
<return>.
TEXT FONT
This button allows a selection of 35 fonts avail-
able for most Apple PostScript printers. There are
two buttons at the top of the menu. The cancel
button pops down the menu without changing the cur-
rent font. The use latex fonts will switch the
menu to the LaTeX font choices. When the LaTeX
font menu is up, besides a cancel button there is a
button to switch back to the PostScript fonts.
The name of the font is printed in the font itself
so that one may see what that font looks like. If
a corresponding X11 font exists, new text is cre-
ated on the canvas using that font. xfig uses the
size of X11 font closest to that selected by the
font size button. If the X11 font doesn't exist,
xfig uses the font selected by the "-normal"
option. To abort selection of a font, click the
left mouse button on cancel.
DRAWING AND EDITING MODE PANELS
Icons in the drawing and editing mode panel windows repre-
sent object manipulation functions, modes and other draw-
ing or modification aids. Manipulation functions are
selected by positioning the cursor over it and clicking
the left mouse button. The selected icon is highlighted,
and a message describing its function appears in the mes-
sage window.
DRAWING MODE PANEL COMMAND DESCRIPTIONS
The drawing mode panel contains buttons used to create the
various xfig objects. Once the drawing mode is selected,
the object is created by moving the mouse to the point on
the canvas where the object is to be placed and pressing
and releasing the left button. After that the mouse is
moved to the second point and the left button is again
pressed for the next point. For those objects which may
have more than two points (e.g. a line), the left button
Release 2.1.3 (Protocol 2.1) 13
XFIG(1) XFIG(1)
may be pressed for each successive point, and the middle
button must be pressed to finish the object. To create a
single point using the POLYLINE button, press and release
the middle button. For the ARC object, which requires
exactly three points the left button is used for all three
points.
At any time the right button may be pressed to cancel the
creation of the object.
ARC Create an arc. Specify three points using the left
button.
BOX Create rectangular boxes. Start and finish with
the left button.
ARC-BOX
Create rectangular boxes with rounded corners.
Start and finish with the left button. The radius
of the corners is selected by the BOX CURVE button.
CIRCLE Create circles by specifying their radii or diame-
ters. Click the left button on the center of the
circle and drag the mouse until the desired radius
or diameter is attained. Click the left button
again to finish the circle.
ELLIPSE
Create ellipses using the same procedure as for the
drawing of circles.
ENCAPSULATED POSTSCRIPT OBJECT (EPS)
Click the left button on either the upper-left or
lower-right corner for the EPS object and finish by
clicking the left button again on the opposite cor-
ner. The EDIT popup panel will appear and the file
name of the EPS object may be entered. After
pressing DONE or APPLY the bitmap part of the EPS
object will appear in the box just created. If no
EPS file is available yet or no name is entered or
there is no preview bitmap in the EPS file, press-
ing DONE will pop down the edit panel and the word
<empty> or the EPS file name will remain in the EPS
box. Later, when the name of the EPS file is known
or the file is available, you may re-read the EPS
file using the popup edit panel and the bitmap part
of the EPS file will replace the name in the box.
If you want the original size of the EPS object,
press the "Use orig size" button and the eps bitmap
will enlarge or shrink to the size specified in the
preview bitmap of the EPS file. If you want the
EPS object to be approximately the size of the
rectangle specified with the mouse but want the
aspect ratio to be same as the original, press
Release 2.1.3 (Protocol 2.1) 14
XFIG(1) XFIG(1)
either "Shrink to orig" or "Enlarge to orig" but-
tons. You must press the APPLY button to see these
effects.
INTERPOLATED SPLINE
Create (cubic spline) spline objects. Enter con-
trol vectors in the same way as for creation of a
POLYLINE object. At least three points (two con-
trol vectors) must be entered. The spline will
pass through the entered points.
POLYLINE
Create polylines (line segments connecting a
sequence of points). Enter points by clicking the
left button at the desired positions on the canvas
window. Click the middle button to finish.
POLYGON
Same as POLYLINE except that a line segment is
drawn connecting the first and last points entered.
REGULAR POLYGON
The number of sides is first selected with the NUM
SIDES button in the indicator panel. Then the left
button is clicked on the center and the mouse
dragged to the desired size. The object may be
rotated as it is being created by moving the mouse
up or down relative to the starting point. Click
the left button to finish.
CLOSED INTERPOLATED SPLINE
Create closed or periodic splines. The function is
similar to POLYGON except that a closed interpo-
lated spline is drawn. The spline will pass
through the points (knots).
CLOSED SPLINE
Create closed or periodic spline objects. The
function is similar to POLYGON except that a closed
spline will be drawn instead of polygon. The
entered points are just control points; i.e., the
spline will not pass any of these points.
SPLINE Create (quadratic spline) spline objects. Enter
control vectors in the same way as for creation of
a POLYLINE object. At least three points (two con-
trol vectors) must be entered. The spline will
only pass through the two end points.
TEXT Create text strings. Click the left button at the
desired position on the canvas window, then enter
text from the keyboard. Text may be pasted from
the PRIMARY cut buffer (xterm cut/paste buffer) by
pressing F18 function key or any key/button defined
Release 2.1.3 (Protocol 2.1) 15
XFIG(1) XFIG(1)
in the translation table for the canvas. See the
default Fig.ad file for example. Text is drawn
using the current font, font size and justification
settings. A DEL or ^H (backspace) will delete a
character, while a ^X will erase the entire line.
Finish by clicking the middle button or typing the
<return> key. If <return> is used, the text
pointer automatically moves to the next "line", a
distance of the font height times the value in the
TEXT STEP button, and text input mode is re-
entered. To finish text fully, click the middle
button or choose any panel button that changes
modes (e.g. box, save, etc). To edit text, click
on an existing text string with the left button.
Insertion of characters will take place at that
point. Or, use the popup EDIT mode to modify the
text.
Eight-bit characters may be entered using the meta
(compose) key. For example, to create an "a
umlaut", hold down the meta key while pressing the
letter "a", then press " (quote). To create a "c
cedilla", use <meta>c followed by comma. The fol-
lowing is a list of all special characters avail-
able using the meta key:
Keys Character Name
!! upside-down exclamation point
?? upside-down question mark
C/ cent sign
L- British pound
OX currency
Y- yen
__ broken vertical bar
SO section
"" dieresis
CO copyright
RO registered trademark
_a ordfeminine
_o ordmasculine
<< guillemotleft
>> guillemotright
-| notsign
-- hyphen
+- plusminus
^- macron
^* degree
^. periodcentered
^1 onesuperior
^2 twosuperior
^3 threesuperior
14 onequarter
12 onehalf
Release 2.1.3 (Protocol 2.1) 16
XFIG(1) XFIG(1)
34 threequarters
\ acute
** multiply
-: division
/u mu
P! paragraph
A` A accent grave
A' A accent acute
A^ A accent circumflex
A~ A accent tilde
A" A dieresis
A* A ring
AE AE
a` a accent grave
a' a accent acute
a^ a accent circumflex
a~ a accent tilde
a" a dieresis
a* a ring
ae ae
C, C cedilla
c, c cedilla
D- Eth
d- eth
E` E accent grave
E' E accent acute
E^ E accent circumflex
E" E dieresis
e` e accent grave
e' e accent acute
e^ e accent circumflex
e" e dieresis
I` I accent grave
I' I accent acute
I^ I accent circumflex
I" I accent dieresis
i` i accent grave
i' i accent acute
i^ i accent circumflex
i" i dieresis
N~ N tilde
n~ n tilde
O` O accent grave
O' O accent acute
O^ O accent circumflex
O~ O accent tilde
O" O dieresis
O/ O slash
o` o accent grave
o/ o accent acute
o^ o accent circumflex
o~ o accent tilde
o" o dieresis
o/ o slash
Release 2.1.3 (Protocol 2.1) 17
XFIG(1) XFIG(1)
P| Thorn
p| thorn
ss German ss (s-zed)
U` U accent grave
U' U accent acute
U^ U accent circumflex
U" U dieresis
u` u accent grave
u' u accent acute
u^ u accent circumflex
u" u dieresis
Y' Y accent acute
y' y accent acute
y" y dieresis
EDITING MODE PANEL COMMAND DESCRIPTIONS
When a button in the editing mode panel is pressed, any
objects that may be affected by that editing operation
will show their corner markers. Only those objects may be
affected by the particular edit mode. In cases where two
edit modes exist for one button, it may be that the corner
markers will appear for objects that may be affected by
one button but not the other.
SELECTING OBJECTS
When multiple objects have points in common, e.g.
two boxes that touch at one corner, only one object
can be selected by clicking on that point. To
select other objects, hold down the shift key while
pressing the left mouse button: the markers of one
object will be temporarily highlighted. By repeat-
edly clicking the left button while holding down
the shift key, it is possible to cycle through all
candidates for selection at that point. To perform
the selected action, e.g. deleting one box, click
on the point without holding down the shift key.
The operation will be performed on the highlighted
object.
Note: If the mouse is not clicked near enough to an
object marker or for whatever reason xfig cannot
"find" the object the user is trying to select, a
black square will temporarily appear above the
mouse cursor.
GLUE COMPOUND
Compound objects are created by first tagging the
objects to be compounded and then pressing the
right mouse button to group the tagged objects into
a compound object. Single objects are tagged by
clicking on them with the left button. A number of
objects can be tagged at once by using the middle
Release 2.1.3 (Protocol 2.1) 18
XFIG(1) XFIG(1)
button to define the upper-left and lower-right
corners of a region enclosing the objects. Tagged
objects are shown with highlighted markers. Tagged
objects which are selected (see the SELECTING
OBJECTS section above) will be temporarily unhigh-
lighted. There is currently no special command to
tag or untag all of the objects within a figure.
You can untag all of the objects by changing from
GLUE mode to some other mode (apart from BREAK) and
back again.
BREAK COMPOUND
Break a compound object to allow manipulation of
its component parts. Click the left button on the
one of the corner markers of the compound object or
along one of the imaginary lines defining the com-
pound box. Clicking with the middle button will
achieve the same effect but will also tag the com-
ponent parts (although you will not see the tags
until you change to the GLUE mode). You can use
this feature to easily alter the objects within a
compound.
SCALE OBJECT
Any object may be scaled. If the left button is
pressed on a BOX or ARC-BOX object, then that
object will be scaled proportionally to its aspect
ratio. If the middle button is pressed on any
object, that object will be scaled up or down about
its center. Text may only be scaled if inside a
compound object and then only if its RIGID flag is
set to NORMAL (using the popup edit panel). See
the TransFig manual for description of text
options.
ALIGN This button will align objects inside a compound
object according to the setting in the VERTICAL
ALIGN and HORIZONTAL ALIGN indicators. The choices
are the cumulative effect of vertically aligning
the objects to the TOP, MIDDLE or BOTTOM edge and
horizontally aligning to the LEFT, MIDDLE or RIGHT
edge of the compound.
MOVE POINT
Modify the position of a point of any object except
TEXT and COMPOUND objects. For unrestrained move-
ment, click the left button over the desired point,
reposition the point, and click the left button
again. For horizontally or vertically constrained
move, click the middle button on the desired point
and move either horizontally or vertically. Notice
that once you choose the direction (horizontal or
vertical), movement is constrained in that direc-
tion. If, after moving the mouse initially, it is
Release 2.1.3 (Protocol 2.1) 19
XFIG(1) XFIG(1)
moved in the other direction a greater distance
than the current position of the mouse relative to
the starting point, then that will be the new con-
straint direction. In otherwords if you first move
the mouse horizontally one inch (say) then move it
vertically 1.3 inches, the direction will switch to
vertical until any horizontal motion exceeds 1.3
inches. When the object is positioned where
desired, click the left to place it if the left
button was used to start the move (unconstrained),
or the middle button (constrained) if that button
was used.
MOVE Move object. Click the left (unconstrained move)
or middle (constrained move) button on any corner
marker of the object to be moved. The horizon-
tal/vertical constrained movement (middle button)
works exactly as described for MOVE POINT.
ADD POINTS
Add points to POLYLINE, POLYGON, SPLINE, or CLOSED
SPLINE objects (points of a BOX can not be added or
deleted). Note that a REGULAR POLYGON is really an
ordinary POLYGON, so adding points to this object
is allowed and does NOT keep the polygon regular.
COPY / CUT TO CUT BUFFER
Copy object to canvas or cut buffer. Click the
left (unconstrained copy) or middle (constrained
copy) button on any corner marker of the object to
be copied (for CIRCLE and ELLIPSE objects, mouse
may also be clicked on their circumferences). The
object will be duplicated and then moved exactly as
in MOVE. If the right button is clicked on an
object, that object is copied to the cut buffer for
pasting into this or another figure. The file used
for the cut buffer is called .xfig in the user's
$HOME directory. This allows a user to run two or
more xfig processes and cut/paste objects between
them. If there is no $HOME, a file is created in
/tmp, called xfigPID where PID is the xfig process
ID.
DELETE POINTS
Delete points from POLYLINE, POLYGON, SPLINE, or
CLOSED SPLINE. Objects (points of a BOX or ARC-BOX
can not be added or deleted). Note that a REGULAR
POLYGON is really an ordinary POLYGON, so deleting
points from this object is allowed and does NOT
keep the polygon regular.
DELETE Click the left button on an object to delete the
object. Delete a region of the canvas by clicking
the middle button and dragging the mouse to define
Release 2.1.3 (Protocol 2.1) 20
XFIG(1) XFIG(1)
an area of objects to delete. Clicking the right
button on an object will copy the object to the cut
buffer (see COPY/CUT TO CUT BUFFER above).
EDIT OBJECT
Edit settings for an existing object. Click the
left button on the object and a pop-up menu will
appear showing existing settings for the object.
Some of the menu entries may be changed by typing
new values in the appropriate windows. These are
editable AsciiTextWidgets and allow cut and paste.
Others pop up a sub-menu of multiple choices when
pressed and held. Press the "done" button to apply
the changes to the object and finish. Press the
"apply" button to apply the changes but keep the
menu up for further changes. Press the "cancel"
button to cancel the changes and pop down the menu.
The following table shows which settings are used
for the different objects.
Object Angle Area Line Line Box Depth Color Radius Text Font/
Fill Width Style Curve Just./Size
--------------------------------------------------------------------------
Arc X X X X X
--------------------------------------------------------------------------
Arc-Box X X X X X X
--------------------------------------------------------------------------
Circle X X X X X X X
--------------------------------------------------------------------------
Ellipse X X X X X X X
--------------------------------------------------------------------------
EPS X X
--------------------------------------------------------------------------
Box,Polygon, X X X X X
Line,Spline
--------------------------------------------------------------------------
Text X X X X
--------------------------------------------------------------------------
The angle may be set, but the object will only be rotated
on PostScript output.
The depth defines how overlapping objects are displayed.
Objects with a greater depth value are obstructed by
objects with smaller depth value. The maximum depth
allowed is 1000.
UPDATE By pressing the left button on an object, the cur-
rent settings for the indicator buttons (line
width, line style, area fill etc.) which have been
selected for update are copied into that object.
When xfig is started, all indicator buttons which
Release 2.1.3 (Protocol 2.1) 21
XFIG(1) XFIG(1)
are components of objects are selected for update.
To unselect an indicator, click on the update but-
ton and click the left mouse button on the small
button in the upper-right corner of the indicator.
When that indicator is selected the foreground
color (default black) shows. When it is unselected
the background color (default white) shows.
If the middle button is clicked on an object, the
settings in the object that are selected by the
indicator buttons are copied into those indicator
button settings. Thus, one may copy selected
attributes of one object to another.
FLIP VERTICALLY
Flip the object up/down (left button) or copy the
object and flip it (middle button). Point to part
of the object, click the appropriate button. That
object will be flipped vertically about that point.
FLIP HORIZONTALLY
Flip the object left/right (left button) or copy
the object and flip it (middle button). Point to
part of the object, click the appropriate button.
That object will be flipped horizontally about that
point.
ROTATE CLOCKWISE
Rotate the object (left button) or copy and rotate
it (middle button) -N degrees (clockwise), where N
is the amount set in the rotation indicator button.
The object is rotated about the chosen point. Not
all objects can be rotated, and not all can be
rotated at arbitrary angles. For example, BOX,
ARC-BOX and EPS objects may only be rotated by 90
degrees. Text objects may be rotated although only
the markers are rotated on the screen, but the text
itself is not displayed rotated because of the lim-
itations of the X11 Window System. Text IS rotated
correctly on PostScript output, however.
ROTATE COUNTER-CLOCKWISE
Rotate the object (left button) or copy (middle
button) +N degrees (counter-clockwise), where N is
the amount set in the rotation indicator button.
The object is rotated about the chosen point.
SPLINE <-> POLYLINE
Turn POLYGON into a CLOSED INTERPOLATED SPLINE
object, or turn POLYLINE into a INTERPOLATED SPLINE
object.
ADD/DELETE ARROWS
Add or delete arrow heads of ARC, POLYLINE or
Release 2.1.3 (Protocol 2.1) 22
XFIG(1) XFIG(1)
SPLINE objects. Add an arrow head by clicking the
left button on the endpoint of the object. Delete
an arrow head by clicking middle button on the end-
point or arrow head.
PANNING
The figure may be panned by clicking the left, middle or
right mouse button in the rulers. Clicking the left but-
ton in the top ruler will pan the image to left the by 1/2
inch (1cm in metric mode), adjusted for zoom factor.
Clicking the right button in the top ruler will pan the
image right by the same amount. By pressing and holding
the middle button the user may drag the ruler by the
amount desired, thus panning the image by that amount.
The figure is panned up and down in the same way by click-
ing the mouse in the ruler on the right of the canvas.
Also, the figure can be returned to its origin by clicking
the left mouse button in the units (e.g. cm or in) box.
The arrow keys may also be used to pan the image and the
home key to return the figure to the origin. Also, press-
ing the Control Key and the middle mouse button will pan
the figure to the origin.
X DEFAULTS
The overall widget name(Class) is xfig(Fig). These
resources correspond to the command line arguments:
Name Class Type Default Command-line
equivalent
---------------------------------------------------------------------------------
justify Justify boolean false -left (false) and
-right (true)
landscape Orientation boolean true -Landscape and
-Portrait
pwidth Width integer 10(8) -pwidth
pheight Height integer 8(9.5) -pheight
trackCursor Track boolean on -track and -notrack
inches Inches boolean true -inches, -imperial,
-centimeters and
-metric
reverseVideo ReverseVideo boolean off -inverse
debug Debug boolean off -debug
latexfonts Latexfonts boolean off -latexfonts
normalFont NormalFont string fixed -normal
boldFont ButtonFont string 8x13bold -bold
startfontsize StartFontSize integer 12 -startfontsize
startpsFont StartpsFont string Times-Roman -startpsFont
startlatexFont StartlatexFont string Default -startlatexFont
showallbuttons ShowAllButtons boolean false -showallbuttons
internalborderwidth InternalBorderWidth integer 1 -internalBW
Release 2.1.3 (Protocol 2.1) 23
XFIG(1) XFIG(1)
scalablefonts ScalableFonts boolean false -scalablefonts
monochrome Monochrome boolean false -monochrome
keyFile KeyFile string CompKeyDB -keyFile
color0 Color0 pixel black
color1 Color1 pixel blue
color2 Color2 pixel green
color3 Color3 pixel cyan
color4 Color4 pixel red
color5 Color5 pixel magenta
color6 Color6 pixel yellow
color7 Color7 pixel white
---------------------------------------------------------------------------------
WIDGET TREE
Below is the widget structure of xfig. The widget class
name is given first, followed by the widget instance name.
Fig xfig
Form form
Form commands
Label message
Command button (one for each of the 8 buttons)
Label mouse_panel
Box mode_panel
Label label
Command button (one for each of the 16 drawing mode buttons)
Label label
Command button (one for each of the 18 editing mode buttons)
Label topruler
Label canvas
Label unitbox
Label sideruler
Box ind_panel
Form button_form
Command button (one for each of the 20 indicator buttons)
Toggle update (some have update buttons, some don't)
TransientShell xfig_ps_font_menu
Box menu
Form buttons
Command cancel
Command use_latex_fonts
Command pane (one for each of the 35 Postscript font panes)
TransientShell xfig_latex_font_menu
Box menu
Form buttons
Command cancel
Command use_postscript_fonts
Command pane (one for each of the 6 LaTeX font panes)
TransientShell xfig_file_msg
Form file_msg_panel
Text file_msg_win
Release 2.1.3 (Protocol 2.1) 24
XFIG(1) XFIG(1)
Command dismiss
TransientShell xfig_file_menu
Form file_panel
Label file_status
Label num_objects
Label file_label
Text file_name
Label filename
Viewport vport
Core clip
List file_list_panel
Label mask_label
Text mask
Label dir_label
Text dir_name
Label dir_alt_label
Command home
Viewport dirvport
Core clip
List dir_list_panel
Command rescan
Command cancel
Command save
Command load
Command merge
TransientShell xfig_export_menu
Form export_panel
Label mag_label
Text magnification
Label orient_label
MenuButton landscape
SimpleMenu menu
SmeBSB portrait
SmeBSB landscape
Label just_label
MenuButton justify
SimpleMenu menu
SmeBSB flush left
SmeBSB centered
Label lang_label
MenuButton eps
SimpleMenu menu
SmeBSB box
SmeBSB epic
SmeBSB eepic
SmeBSB eepicemu
SmeBSB latex
SmeBSB null
SmeBSB pic
SmeBSB pictex
SmeBSB eps
SmeBSB ps
Release 2.1.3 (Protocol 2.1) 25
XFIG(1) XFIG(1)
SmeBSB pstex
SmeBSB pstex_t
SmeBSB textyl
SmeBSB tpic
SmeBSB Xbitmap
Label def_file_label
Label def_file_name
Label out_file_name
Text file
Label filename
Viewport vport
Core clip
List file_list_panel
Scrollbar vertical
Label mask_label
Text mask
Label dir_label
Text dir_name
Label dir_alt_label
Command home
Viewport dirvport
Core clip
List dir_list_panel
Command rescan
Command cancel
Command export
TransientShell xfig_print_menu
Form print_panel
Label printer_image
Label mag_label
Text magnification
Label orient_label
MenuButton landscape
SimpleMenu menu
SmeBSB portrait
SmeBSB landscape
Label just_label
MenuButton justify
SimpleMenu menu
SmeBSB flush left
SmeBSB centered
Label dir_label
Text printer
Command cancel
Command print
NOTE: The following is a typical popup edit panel (for ARC-BOX)
The panel will be different for other objects.
TransientShell xfig_edit_panel
Form form
Label POLYLINE:ArcBox
Label image
Release 2.1.3 (Protocol 2.1) 26
XFIG(1) XFIG(1)
Command done
Command apply
Command cancel
Label
Label Width =
Text Width =
Label Color =
Text Color =
Label Depth =
Text Depth =
Label Area fill =
MenuButton No fill
SimpleMenu menu
SmeBSB No fill
SmeBSB Filled
Label Fill density % =
Text Fill density % =
Label Line style =
MenuButton Solid Line
SimpleMenu menu
SmeBSB Solid Line
SmeBSB Dashed Line
SmeBSB Dotted Line
Label Dash length/Dot gap =
Text Dash length/Dot gap =
Label Top Left:
Label Top Left:
Text Top Left:
Label Top Left:
Text Top Left:
Label Bottom Right:
Label Bottom Right:
Text Bottom Right:
Label Bottom Right:
Text Bottom Right:
Label Radius =
Text Radius =
BUGS and RESTRICTIONS
Please send bug reports, fixes, new features etc. to:
bvsmith@lbl.gov (Brian V. Smith)
Not all operations employ smart redrawing of objects which
are altered as a by product of the operation. You may
need to use Redraw in these cases.
Must compile xfig with -DOPENWIN in order to make xfig
handle OpenWindows scalable fonts correctly.
There is a bug in OpenWindows 2.0 which relates to pixmaps
in widgets. You must compile xfig with the -DOPENWINBUG
option for this problem.
If the image is panned or the xfig window iconified and
Release 2.1.3 (Protocol 2.1) 27
XFIG(1) XFIG(1)
de-iconified during the middle of an operation (e.g. while
drawing a line), the picture will be distorted. This can
be corrected using Redraw after the operation is complete.
Rotated text, circles and ellipses will be displayed hori-
zontally on the screen. They will be rotated only when
printed on PostScript output.
Corners of object scaled with point positioning in one of
the grid modes will not always fall on the grid line, but
to the closest pixel.
SEE ALSO
Brian W. Kernighan PIC - A Graphics Language for Typeset-
ting User Manual
fig2dev(1) (TransFig package)
ACKNOWLEDGEMENT
Many thanks goes to Professor Donald E. Fussell who
inspired the creation of this tool.
COPYRIGHT
Original Copyright (c) 1985 by Supoj Sutanthavibul
Permission to use, copy, modify, distribute, and sell this
software and its documentation for any purpose is hereby
granted without fee, provided that the above copyright
notice appear in all copies and that both that copyright
notice and this permission notice appear in supporting
documentation, and that the name of M.I.T. not be used in
advertising or publicity pertaining to distribution of the
software without specific, written prior permission.
M.I.T. makes no representations about the suitability of
this software for any purpose. It is provided "as is"
without express or implied warranty.
PostScript is a trademark of Adobe Systems Incorporated.
FILES
CompKeyDB - Data base of compose key sequences for 8-bit
charac- ters.
Must be installed in $(XFIGLIBDIR) with 'make
install'. See the Imakefile.
Doc/FORMAT2.1 - Description of Fig file format.
CHANGES - Description of bug fixes/new features.
AUTHORS
Many people have contributed to xfig. Here is a list of
the people who have contributed the most:
Original author:
Supoj Sutanthavibul, University of Texas at Austin
Release 2.1.3 (Protocol 2.1) 28
XFIG(1) XFIG(1)
The LaTeX line drawing modes were contributed by:
Frank Schmuck, Cornell University
(schmuck@svax.cs.cornell.edu)
Original X11 port by:
Ken Yap, Rochester (ken@cs.rochester.edu)
Variable window sizes, cleanup of X11 port, right hand
side panel:
Dana Chee, Bellcore (dana@bellcore.com)
Cleanup of color port to X11 by:
John T. Kohl, MIT (jtkohl@athena.mit.edu)
Area fill, multiple line thicknesses, multiple fonts and
font sizes, bottom panel, line style/thickness modifica-
tion of objects by:
Brian V. Smith, Lawrence Berkeley Laboratory
(standard disclaimer applies)
(bvsmith@lbl.gov)
Popup change-object menu by:
Jon Tombs (jon%robots.oxford.ac.uk@nsfnet-relay.ac.uk),
and
Frank Schmuck (schmuck@svax.cs.cornell.edu)
Zooming and panning functions, shift key select mechanism
by:
Dieter Pellkofer (dip@regent.e-technik.tu-muenchen.de),
and
Henning Spruth (hns@regent.e-technik.tu-muenchen.de)
Depth feature by:
Mike Lutz (mjl@cs.rit.edu)
Version 2.1 extensive modifications: Indicator panel, file
menu popup, print menu popup, panning with rulers, mouse
function window, regular polygon, rubberbanding of cir-
cles/ellipses, filled splines on canvas, dashed/dotted
splines on canvas, update button, arbitrary angle rotation
of objects, alignment in compound, object scaling, con-
strained copy/move, corner markers for compound, context
sensitive corner markers, smarter redraw, undo for com-
pound and point move for boxes, cancel object creation,
point positioning to three resolutions, TransFig scalable
text, hidden text, special text, save of figure on crash
by:
Paul King (king@cs.uq.oz.au)
with help from:
Brian V. Smith (bvsmith@lbl.gov) and Micah Beck
(beck@cs.cornell.edu)
Encapsulated PostScript importing by:
Release 2.1.3 (Protocol 2.1) 29
XFIG(1) XFIG(1)
Brian Boyter (root@fstc-chville.army.mil)
Color implementation and pan/zoom with ctrl key/mouse by:
Henning Spruth (hns@regent.e-technik.tu-muenchen.de)
International characters by:
Herver Soulard (soulard@corto.inria.fr)
Directory Browser based on XDir by:
Win Treese, Digital Equipment Corporation
(treese@crl.dec.com)
Release 2.1.3 (Protocol 2.1) 30