Corrected a long-standing error in which ending text with a literal
[xcircuit.git] / lib / xcircuit.1.in
blobb59b986bf0a43b85ad2a61c0110383e3d8e1d71e
1 .TH XCircuit 1 "January 5, 2000" "X11R6"
2 .SH NAME
3 xcircuit - Draw circuit schematics or almost anything; make
4 circuit netlists from schematics.
5 .SH SYNOPSIS
6 .B xcircuit [\fIfilename\fP[,...]] 
7 .SH DESCRIPTION
8 The program xcircuit is a generic drawing program tailored
9 especially for making publication-quality renderings of 
10 circuit diagrams (hence the name).  The output is pure
11 PostScript, and the graphical interface attempts to maintain
12 as much consistency as possible between the X11 window
13 rendering and the final printer output.
14 .sp
15 \fIxcircuit\fP is mouse, menu, and keyboard\-driven, with the emphasis
16 on single-character keyboard macros.
17 .SH OPTIONS
18 .TP 8
19 .B \fIfilename\fP[,...]
20 Begin running xcircuit by loading in the PostScript file
21 filename.  If filename does not have a .ps extension,
22 xcircuit will attempt to look for both the filename
23 as entered and, upon failure, with the .ps extension.
24 The file must be in xcircuit format.  \fIfilename\fP
25 may also be a comma-separated list of files.
27 .SH BASIC ELEMENTS
28 There are five drawing elements.  These are as follows:  
29 .TP 3
30 .B a)
31 polygon (multiple lines which may or may not be closed and filled)
32 .TP 3
33 .B b)
34 arc (ellipse segment which may be closed and/or filled as above)
35 .TP 3
36 .B c)
37 label (any text)
38 .TP 3
39 .B d)
40 curve (based on the PostScript "curveto" algorithm)
41 .TP 3
42 .B e)
43 object instance (see below)
44 .PP
45 There are two composite elements, which are:
46 .TP 3
47 .B f)
48 path (a connected series of polygons, arcs, and curves)
49 .TP 3
50 .B g)
51 object (something containing polygons, arcs, labels, 
52 curves, paths, and instances of other objects)
54 .SH MOUSE BUTTONS
55 The mouse button system, the object library, and the paged buffer
56 system are loosely based on the
57 Caltech circuit-simulation program "log" (either "analog" or "diglog").
58 .sp
59 The general idea is to make the most commonly-used functions the
60 easiest to perform, and (to the extent possible) to scale (inversely)
61 the complexity of performing a function with the frequency of that task.
62 Because this program is tailored to circuit drawing, the most common
63 functions are drawing lines and moving object instances.  The next most
64 common function is selection of elements singly or in groups.
65 .sp
66 Mouse button 1 can be tapped to start a connected chain of lines, the
67 most common drawing function.  In addition, button 1
68 has a function called "grab", which occurs after the button has
69 been continually pressed for a short length of time (about 1/5 second).
70 As the name implies, "grab" grabs hold of an element which can then
71 be moved around the screen.
72 .sp
73 Button 2 can be used to select an item if tapped, and if pressed
74 and held down, a box will be drawn and everything inside that box
75 selected when the button is released.  In all other cases, button 2
76 will complete a command.  For users who have only two mouse buttons
77 and do not emulate the middle mouse button with the combination of
78 buttons 1 and 3, use the combination of the Shift key and mouse
79 button 1 to emulate mouse button 2.
80 .sp
81 Button 3 will normally abort a command.  During editing of an arc,
82 spline, or polygon, button 3 will revert back to the previous form,
83 or abort if there is no remaining edit history.
84 .sp
85 All other commands are 
86 available from the pulldown menus and/or from the keyboard using
87 single-key macros (with easy-to-remember mnemonics).
88 Keyboard commands are quicker, since they act on the present cursor
89 position, whereas menu commands require an extra step.
91 .SH BUILT-IN LIBRARY
92 The library is intended to provide a convenient way to store and
93 retrieve elements of a picture which will be used more than once.
94 For the application of circuit drawing, a built-in library provides
95 basic objects such as transistors, amplifiers, resistors, capacitors,
96 arrows, circles, power and ground symbols, and the like.  This file
97 is a composite of several library files (such as "builtins.lps",
98 "analog.lps", and "digital.lps") which are called by the startup
99 script
100 PYTHON ("xcstartup.py")
101 TCL ("xcstartup.tcl")
102 NOINTERP ("startup.script")
103 The program first looks for the startup script in
104 the current directory, and then searches in the directory given by
105 the environment variable "XCIRCUIT_LIB_DIR", and finally, in the
106 hard-coded global directory (LIBDIR) if it could not find it elsewhere.
107 Thus each user can add to or modify the file of builtins to reflect
108 personal taste.  Since the PostScript output contains all object
109 definitions, these changes to the built-in functions are inherently
110 transferrable.  Xcircuit will automatically resolve conflicts between
111 objects having the same name but different contents.
113 The library is accesible from the pull-down menu or with the "l"
114 keyboard macro.  When inside the library, clicking the first mouse
115 button on an object "grabs" that object and returns the graphics
116 state immediately to the page being edited, so that the object
117 will be placed when the mouse button is released.
119 .SH ZOOMING
120 Xcircuit has unconstrained zooming and snap-to positioning.  Objects
121 scale completely:  line widths and text sizes will increase/decrease
122 proportionally with the zoom, as well as dot/dash spacing and all
123 other features.  Xcircuit does have a minimum integer grid in
124 coordinate space, which translates to 0.005 inches at an output scale
125 of 1.  The maximum zoom scale gives a screen size translating to
126 about 100 by 100 inches at an output scale of 1.  The effective
127 scale can be varied by changing the output scale (reached from the
128 "File/Write" menu selection) in order to fit a drawing to a page or
129 to get a grid matched to a specific dimension.  A separate scale
130 parameter changes the scale of the reported position relative to
131 the output scale (as it will appear on a printed page).
133 .SH SNAP-TO GRID
134 The snap-to grid is an all-important feature for circuit drawing,
135 wherein it is critical that elements line up properly with one another.
136 In \fIxcircuit\fP, there is no way to get off the snap-to grid except by
137 turning the snap function off and physically pushing elements off
138 the grid.  Generally, it is most convenient to leave the snap functon
139 on and use key macros "+" and "-" to double/halve it as necessary.
140 In any case, objects can always be returned to the snap grid with
141 the "snap" function (key macro "S").
143 .SH SELECTION MECHANISM
144 Objects are selected using a variety of search methods.  The
145 select box (formed by holding down mouse button 2 and dragging
146 the pointer) uses the simplest method, searching for
147 curve/polygon segment endpoints, arc centers, and label
148 and object bounding boxes falling within the select box frame.
149 General object selection is more complicated.  Polygons, Arcs,
150 and Curves are selected by their outer edges, not the interiors.
151 Currently this is also true for filled instances of those types.
152 A line is selected if the pointer is in a
153 region describing a box around it, which is adusted according
154 to the scale (zoom factor).  Every object has an
155 associated bounding box, which is rectangular but may be rotated
156 with respect to the top level window.  An object instance is
157 selected if the pointer falls within its bounding box.  Each
158 label also has a bounding box carefully calculated from the width
159 of the text string.
161 Often the selection mechanism will find multiple elements in
162 range of the pointer.  In this case, each object in turn will be
163 presented, colored in blue (or the specified "querycolor" in the
164 defaults file), and the user has the option of accepting the 
165 highlighted element for selection using the mouse button 1, or
166 rejecting it with mouse button 3.  When all the elements under
167 consideration have been accepted or rejected, the program
168 proceeds to execute whatever function was in progress.  This
169 selection method takes a little while to get used to, but is
170 sensible and seems to work well.
172 .SH COLOR
173 Color in xcircuit is implemented with the idea of "color inheritance".
174 Every page has a "default color" of black.  All elements which have
175 color value "Inherit" will inherit the default color, black.  If an
176 object instance is painted blue (for instance), all components in
177 that object which have color value "Inherit" will inherit its color,
178 blue.  The reason for this is that it allows different object
179 instances to be painted different colors (such as if one part of
180 a circuit is highlighted for emphasis), while making it possible for
181 object instances to be multicolored, if necessary.  Changing the
182 color of an object instance will have no observable effect on the 
183 drawing if none of the components of the object inherit that color.
184 An object may have both normally colored components and components
185 which inherit their color, in which case only those components with
186 the "Inherit" value will change color when the color of the object
187 instance is changed.
189 .SH SCHEMATIC CAPTURE
190 XCircuit implements a sophisticated schematic capture.  Unlike
191 virtually all schematic capture software currently available,
192 xcircuit allows the designer to draw the circuit in a "natural"
193 way, making use both of schematic hierarchies and simple
194 hierarchies created simply by grouping elements together.  If
195 the chosen netlist format is hierarchical (like SPICE), both
196 hierarchical forms will be retained in the output.  For element
197 grouping, input/output ports connecting into to the group will
198 be determined automatically, from context.  A schematic capture
199 tutorial is available from the xcircuit website,
201 http://opencircuitdesign.com/xcircuit/tutorial/tutorial2.html.
204 Netlist types currently available are "SPICE", "sim", and "PCB".
206 .SH KEYBOARD COMMANDS
209 \fBBasic keyboard commands:\fP
210 .TP 12
211 .B Z
212 Zoom in by a factor of 3/2.  If this key is pressed while a
213 selection box is active (created with the middle mouse
214 button), then acts like Zoom Box function.
215 .TP 12
216 .B z
217 Zoom out by a factor of 3/2.
218 .TP 12
219 .B p
220 Pan the screen so that the point under the mouse is brought
221 to the center of the program window.  This function can also
222 be conveniently performed by clicking on the scrollbars.
223 The scrollbars cannot be moved continuously due to the slow
224 time for screen refresh.
225 .TP 12
226 .B cursors
227 The arrow keys perform a pan of one-half window size in the
228 direction of the arrow pressed.
229 .TP 12
230 .B l
231 Go to the Library of built-in objects.  From the library,
232 use mouse button1 to grab an object and bring it back to
233 the edit screen, or button3 to return without selecting 
234 an object instance.  While in the library screen, the
235 zoom and pan functions can be used to move around.
236 .TP 12
237 .B >
238 Push into an on-screen object in order to edit that object
239 .TP 12
240 .B <
241 Return from editing an object.  Object pushes and pops can
242 be stacked indefinitely.
243 .TP 12
244 .B space
245 Refresh the screen.
246 .TP 12
247 .B digits 0-9
248 Switch to one of the first ten editing pages.  Pages greater
249 than 10 can be reached from the "Window/Goto Page" menu
250 selection.
251 .TP 12
252 .B + and -
253 Change snap-to grid spacing by a factor of two up or down.
254 .TP 12
255 .B | : and _
256 (Bar, colon, and underline) Change style on the currently
257 selected object to dashed, dotted, and solid, respectively.
258 .TP 12
259 .B h or ?
260 Print a help page summary of commands
263 \fBCommands to create elements:\fP
264 .TP 4
265 .B a
266 Arc.  Center is fixed at the initial position of the cursor.
267 The mouse position changes the radius of the circle.
268 In snap-to mode the arc boundry will pass through the snap point
269 closest to the cursor.  Mouse button 1 cycles from controlling
270 the radius to controlling the starting point, the ending point,
271 and separately controlling the minor axis to create ellipse.
272 Mouse button 2 completes the arc.
273 .TP 4
274 .B b
275 Box.  This is a convenience function for generating rectangular
276 closed polygons.  Creates a rectangle with one corner fixed at
277 the position of the cursor.  Subsequent movement of the cursor
278 defines the point diametrically opposed.  Mouse buttons 1 or 2
279 complete the box.
280 .TP 4
281 .B s
282 Spline curve.  The first endpoint is defined by the initial cursor
283 position.  Mouse position adjusts the other endpoint of the curve.
284 Mouse button 1 cycles from controlling position of the endpoint
285 to controlling positions of the curve control points and the curve
286 starting point.  Mouse button 2 completes the curve.
287 .TP 4
288 .B t
289 Text.  Text starts out justified according to the styles chosen
290 in the pull-down menu.  Text can be rejustified using the menu
291 or by typing the numbers on the keypad (\fBshift-keypad-1\fP through
292 \fBshift-keypad-9\fP).  The position of the keys on the keypad
293 matches the justification.  Subscripts, superscripts, font
294 changes, text size changes, underlining, and overlining are all
295 available from the pull-down menu.  Text edit mode recognizes
296 \fBHome\fP and \fBEnd\fP keys to move to the beginning and end
297 of the string, respectively.  If the X11 environment maps
298 control key sequences to character encodings (such as ISO-Latin1),
299 these may be used to insert non-ASCII text.  Another method of
300 inserting non-ASCII characters is the use of the backslash
301 character, which duplicates the action of the
302 Text/Insert/Character menu button.
303 .TP 4
304 .B M, m
305 Make object.  Takes all the elements currently selected and
306 compiles them into an object.  The object is then placed in the
307 user library.  The elements just selected are deleted from the
308 screen and replaced by the new object.  The center point of the
309 resulting object is chosen as the closest snap-to point to the
310 center of the object's bounding box;  if another center is desired,
311 then the object can be edited using the ">" command and its contents
312 moved with respect to its origin.  \fINote:\fP  Objects cannot have
313 the same name as PostScript commands or have the same name as any
314 other object in memory.  If such a name is found, an underscore ("_")
315 will be prepended to the name as many times as is necessary to
316 differentiate it from all other known objects.
317 The name also cannot contain special PostScript characters such as
318 slash; any such characters found will be replaced with underscores.
321 \fBMajor editing commands:\fP
322 .TP 4
323 .B d
324 Delete.  Select the nearest element or elements and delete it/them.
325 .TP 4
326 .B u
327 Undelete.  Xcircuit saves up to 10 delete events to be recovered.
328 Delete events are stored in order of occurrence, and the most
329 recent delete event is the first to be recovered.
330 When multiple elements are deleted at the same time, all of them
331 are stored as one delete event, and restored together.
332 .TP 4
333 .B x
334 Deselect. Elements which have been selected can be deselected on
335 a per-item basis.  In order not to be too confusing, deselect does
336 not query if multiple items are found under the cursor; it just
337 deselects them all.
338 .TP 4
339 .B c
340 Copy.  Make a copy of the object(s) nearest the cursor.  Object
341 is automatically grabbed for moving to a new position.  The 
342 next button1 or button2 press will place the element.  Button2
343 will end the copy, and button1 will continue the copy function.
344 .TP 4
345 .B e
346 Edit.  The action of Edit is dependent on the type of element
347 selected.  These are detailed below:
348 .TP 12
349 .B Label
350 Returns to text editing mode, starting with the cursor
351 at the end of the string.  Mode is like regular text entry
352 except that Button 3 returns text to its original string.
353 .TP 12
354 .B Polygon
355 Grabs one point of a polygon for repositioning.  Button 1 cycles
356 between points, button 2 accepts the new polygon, and button 3
357 returns to the previous state, unless there is no remaining edit
358 history, in which case it aborts the command.
359 Key macros available during polygon edit are:
361 "x"---Breaks the polygon at the given point.
363 "e"---Moves edit position to the next point.
365 "i" or "Insert"---Inserts a new point at the position.
367 "d" or "Delete"---Deletes the current edit point.
369 There are four modes for polygon editing; see the
370 "\fBPolygon Edit\fP" section below for details.
371 .TP 12
372 .B Arc
373 Allows resizing of the radius.  Mouse button 1 or the "e" key
374 will cycle between control of the radius, the endpoint angles,
375 and the ellipse minor axis.  Mouse button 2 accepts the new
376 arc.  Button 3 returns to the previous editing state,
377 unless there is no remaining edit history, in which case it
378 aborts the command.
379 .TP 12
380 .B Curve
381 Allows repositioning of one end of the curve.
382 Originally, the starting angle of the curve is kept fixed.
383 Mouse button 1 or the "e" key cycles between the four
384 control points of the curve, allowing control over the
385 angle of the curve at its endpoint and the shape of the
386 curve.  Mouse button 2 accepts the new curve.  Button 3
387 reverts back to the previous edit state
388 unless there is no remaining edit history, in which case
389 it terminates the command.
390 .TP 12
391 .B Object instance
392 Object instances have no properties to change
393 except scale, and do not respond to the "edit" command.
394 Scale can be changed by selecting "Options/Other/Object Size"
395 from the menu.
398 \fBMinor editing commands:\fP
399 .TP 4
400 .B R
401 Rotate the selected element(s) or element under the cursor
402 counterclockwise in 15 degree intervals.
403 .TP 4
404 .B r
405 Rotate the selected element(s) or element under the cursor
406 clockwise in 15 degree intervals.
407 .TP 4
408 .B O
409 Rotate the selected element(s) or element under the cursor
410 counterclockwise by 5 degree intervals.  This is currently
411 the smallest angle resolution available to xcircuit.
412 .TP 4
413 .B o
414 Rotate the selected element(s) or element under the cursor
415 clockwise by 5 degree intervals.
416 .TP 4
417 .B f
418 Flip an element around a vertical axis defined by an object's
419 origin for an object instance, or across an axis defined by
420 the pointer position for arcs, polygons, and curves.
421 .TP 4
422 .B F
423 Flip an element around a horizontal axis defined
424 similarly to the "f" command.
425 .TP 4
426 .B X
427 If two elements are selected, their order is exchanged
428 (this is only relevant if one element occludes another).
429 If one element is selected, it is raised up one in the
430 stack, and if it is already on top of the stack, it is
431 shuffled to the bottom.
432 .TP 4
433 .B S
434 Snap the nearest object to the snap-to grid.  For
435 curves the control and endpoints are snapped; for polygons, each
436 point is snapped; for arcs, the centerpoint is snapped; for labels
437 and object instances, the designated point of origin is snapped.
438 .TP 4
439 .B j
440 Join polygons together.  This only makes sense if it is possible
441 to make a single continuous (open or closed) polygon from the
442 selected parts.  Otherwise a warning will be posted and the parts
443 will remain separate.
444 .TP 4
445 .B A
446 Attach an element to a polygon, arc, or curve.
447 The element to be attached must be the one currently grabbed
448 (either by a "drag", copy command, or edit command).
449 Until it is released, it will be forced to align
450 its center (object, arc), endpoint (polygon, curve), or
451 position (label) with the closest polygon, arc, or curve.
452 Note that this is a very powerful tool for generating, for
453 example, lines tangent to a curve, or objects arranged in
454 a circle or along a line.
457 \fBLibrary editing commands:\fP
458 .TP 4
459 .B D
460 Delete.  The selected objects will be deleted from the library
461 unless other library objects or pages contain references to that
462 object.  \fBNote:\fP Unlike deleting object instances with the
463 "\fBd\fP" command, this command deletes the actual object and
464 releases all memory associated with that object, so the
465 object cannot be undeleted.
466 .TP 4
467 .B C
468 Copy.  Makes a copy of an object from either library page and
469 places the new copy in the user library.  The new object will
470 be renamed to avoid naming conflicts.
471 .TP 4
472 .B M
473 Move.  If one object has been selected, it is moved to the
474 position of the cursor.  If two objects have been selected,
475 their positions in the library are exchanged.
476 .TP 4
477 .B E
478 Edit label.  Edit the object name whose label is under the
479 cursor.  After editing, the object name will be checked for
480 conflicts with other object names, and altered if necessary.
481 .TP 4
482 .B H
483 Hide object.  If the object is a sub-instance of another object,
484 but is not meant to be used by itself, it can be "hidden" so
485 that it will not appear by itself on the library page.
487 .SH MENU COMMANDS
489 .TP 4
490 .B Write Postscript (W)
491 This command brings up a popup menu with a number of options.
492 First, it gives the name of the file if one exists, or else it
493 gives the default name of the buffer (usually \fBPage\fP \fIn\fP,
494 where \fIn\fP is the number of the buffer).
495 Next, it gives a preview of the picture scale and output
496 styles, which include Landscape/Portrait orientation and
497 Encapulated/Unencapsulated (full page) PostScript modes.
498 The former allows adjustment of the nominal size of the picture
499 when drawn in PostScript.  The default scale is 1.00, which
500 makes the text scale of 1.0 about 14 points on the PostScript
501 page.  The width and height of the resulting 
502 picture are also given, in inches, and any of the three
503 values can be changed.  The values of the other two will
504 be updated accordingly.  Pages which have the same name
505 will be grouped together into a single file, allowing
506 multiple pages to be stored in the same PostScript file.
507 However, as Encapsulated PostScript does not make sense
508 for this kind of file, it is not an option.
510 The \fBWrite File\fP button writes the current page to an
511 output file.  If the page has a name other than the default,
512 the file will automatically be saved under that name.  Otherwise,
513 it is necessary to change the name of the buffer.  If a file of
514 that name already exists on the disk, the button will read
515 \fBOverwrite File\fP.
516 .TP 4
517 .B Read PostScript
518 Reads in a file of Xcircuit format.  The
519 file name is requested by a popup prompt, and an extension
520 of ".ps" will be added if necessary.  The file is read
521 into the current page, which is cleared first if anything
522 is in it.  If the file is a multiple-page file, the current
523 page will be overwritten with the first page from the file,
524 but other pages will be loaded into empty buffers.
525 LGF Xcircuit can also read "lgf"-format files from
526 LGF the Chipmunk CAD tools programs "analog" and "diglog".
527 .TP 4
528 .B Import PostScript
529 Acts like "Read PostScript" except that the page is not
530 reset first, so graphics are added on top of existing
531 graphics on the page.
532 .TP 4
533 .B Clear Page
534 Clears the current page of all elements and resets the
535 name.  The contents cannot be recovered.
536 .TP 4
537 .B Alt Color
538 Switches between the two xcircuit color schemes.  The
539 color schemes can be redefined through XDefaults
540 (see below).  The default color schemes are black-on-white
541 and white-on-black.  The latter is less straining to the
542 eyes, but the former matches the black ink on white paper
543 PostScript output.  Any color scheme other than black-on-white
544 is not recommended for drawings with color, as the actual
545 output does not match the observed xcircuit screen.
546 .TP 4
547 .B Grid
548 Turns the grid lines on and off.
549 .TP 4
550 .B Axes
551 Turns the axis lines on and off.  The axes mark the 
552 origin (0,0) of the page.  On the top level (TopObject),
553 the origin has no particular relevance, since encapsulated
554 output will define its own boundaries, and full-page
555 (unencapsulated) output will be centered on the output
556 page, not according to the Xcircuit coordinate system.
557 .TP 4
558 .B Grid spacing
559 Changes the spacing of the grid lines.
560 Default spacing is 1/6 inch, which is about
561 the width of the letter 'W' in default text scale.
562 .TP 4
563 .B Grid type/display
564 This is a submenu allowing the coordinates and coordinate
565 grid to be specified in alternate units.  Listing of 
566 coordinates in the top window can be in default fractional
567 inches, decimal inches, or centimeters.  Default spacing
568 of grid lines is either one-quarter inch or one-half
569 centimeter.  Selecting an A:B scale With option
570 "\fBDrawing Scale\fP" causes all listed coordinates to be
571 multiplied by the scale.  \fINote:\fP Xcircuit will make
572 an attempt to keep objects on the snap/grid spacing when
573 switching between inch and centimeter scales.  In order
574 to do this, it will change the output scale by the ratio
575 of 2.54 to 2.5, thus keeping a closer correspondence between
576 inches and centimeters.  To get true centimeters on the
577 output page, the output scale (from the "File/Write Xcircuit PS")
578 can be reset to 1.0 at the expense of having all objects
579 intended for the inch grid displaced off of the snap grid.
580 .TP 4
581 .B Snap-to
582 Turns the snap-to grid on and off.  When the grid
583 is on, movement and placement of elements is restricted
584 to points on the snap-to grid.
585 .TP 4
586 .B Snap spacing
587 Determines the spacing of the points in the
588 snap-to grid.  Default is 1/12 inch, which is half
589 the grid line spacing.
590 .TP 4
591 .B Linewidth
592 Controls the default linewidth against which
593 all linewidths in the drawing are scaled.
594 .TP 4
595 .B Polygon Edit
596 The options in this submenu control how the position of
597 lines are affected when a point in a polygon is selected
598 for editing.  "\fBRhomboid-X\fP" mode moves adjoining
599 points as necessary to keep all horizontal lines horizontal;
600 "\fBRhomboid-Y\fP" mode acts similarly to keep all vertical
601 lines vertical.  "\fBRhomboid-A\fP" is similar to Manhattan
602 mode but also tracks non-Manhattan lines.
603 The default mode is "\fBManhattan Box Edit\fP",
604 which is a combination of Rhomboid-X and Rhomboid-Y.  In
605 "\fBNormal\fP" mode, only the point being edited can be moved.
606 .TP 4
607 .B \fPArc/Box/Curve\fB Border
608 The options under this menu determine the
609 border style of arcs, polygons, and curves.  If an element
610 is selected, it will be modified;  otherwise, if
611 no objects are selected, the style chosen is made
612 default for all subsequent arcs, polygons, and curves.
613 Elements may be drawn with or without borders (but
614 for obvious reasons cannot be made both borderless
615 and unfilled, which would be invisible)
616 The borders may be closed or unclosed.  For an arc,
617 closed means that a chord is drawn connecting the two
618 endpoints, if the beginning and ending angles do not
619 complete a full circle.  Borders may be solid, dashed,
620 dotted, and of varying width.
621 .TP 4
622 .B \fPArc/Box/Curve\fB Fill
623 The options under this menu determine the
624 fill style of arcs, polygons, and curves.  
625 Fill style may be solid, empty, or one of 7 stipple
626 patterns varying from light to dark, which are drawn
627 both in xcircuit and PostScript as stipple patterns.
628 Stipples can be transparent or opaque.
629 \fIWarning\fP:  Transparent
630 stipples are NOT inherent to PostScript and the hacks
631 necessary to implement them cause slow rendering on
632 a printer or PostScript previewer.  Due to the
633 device-dependent nature of the routines, patterns
634 will look abnormally large on PostScript previewers.
635 This transparancy feature has been added with the
636 expectation that most circuit schematics will not
637 rely heavily upon halftoning.  Complicated color
638 patterns can be created using transparent colored,
639 stippled elements on top of solid-color elements. 
640 \fINote\fP: Ordering of elements is according to
641 order created.  A different ordering can be achieved
642 using the "\fBX\fP" (exchange) command.  This method
643 is not especially easy to work with, and hopefully
644 something better will be implemented in the future.
645 .TP 4
646 .B \fPArc/Box/Curve\fB Color
647 See the COLOR section above for a discussion of color
648 inheritance.  This menu shows all the colors available
649 to xcircuit with the option of adding more colors.
650 Currently the entry style for colors is by name or by
651 RGB content in the X11 style of #rrggbb where rr, gg,
652 and bb are hex values ranging from 00 to FF.  The only
653 limit to the number of colors is the X Server's colormap
654 depth.  If the colormap is full, xcircuit attempts to
655 allocate the closest possible color to the one requested.
656 .TP 4
657 .B Zoom Box
658 This zoom feature requests the user to create a box
659 (using either mouse button 1 or 2, expanding the box
660 while holding down the button).  When the button is
661 released, the view will zoom to the area of that box.
662 .TP 4
663 .B Full View
664 This zoom feature calculates the bounding box
665 of the entire picture and adjusts the scale to make
666 it fit comfortably inside the program window.
667 .SH TEXT FEATURES
668 Xcircuit's ability to handle text is arguably the
669 most complicated part of the program, and also of
670 the PostScript output.  Careful attention to text
671 justification and style is the key to a good drawing.
672 .TP 4
673 .B Text Size
674 Alters the size of the labels.  The value is
675 a scale, with a default of 1.0 which translates to
676 14 points on the PostScript page if the default page
677 scale of 1 is used.  If a label is selected, only that
678 label is affected.  If a label is being edited, scale
679 changes starting at the edit position.  Otherwise, it
680 becomes the default size for all subsequent labels.  Size
681 affects the entire text string.  Text size can be changed
682 anywhere inside of a string.  However, text sizes inside
683 a string are all given relative to the label size, not as
684 an absolute point size.  Sizes of subscripts and superscripts
685 are given relative to the natural size of the subscript or
686 superscript (2/3 the size of the text for which it is a
687 modifier).
688 .TP 4
689 .B \fPText\fB Font
690 Standard printer fonts Times-Roman, Helvetica,
691 Courier, and Symbol, are readily available.
692 "User-defined" fonts can also be added; however,
693 support is currently limited, and requires a font
694 object (.lps) file and encoding (.xfe) file,
695 examples of which are found in the fonts subdirectory
696 of the xcircuit library directory.
697 .TP 4
698 .B \fPText\fB Style
699 Four standard font styles are available, 
700 matching the standard printer font variations:  Normal,
701 Italic (or oblique), Bold, and BoldItalic.
702 PostScript matrix manipulation allows slanted versions
703 of any font, such as Symbol, for which none is otherwise
704 available.
705 .TP 4
706 .B \fPText\fB Insert
707 The Insert menu allows insertion of special characters 
708 which are otherwise not (necessarily) allowed from the
709 keyboard.  These include tab-stop, tab-forward, tab-backward,
710 kern, half-space, quarter-space, and "Character".  The latter
711 option brings up a page showing the 256-character encoding
712 vector for the font, allowing point-and-click entry of any
713 character in the font.  "Kern" instructions allow characters
714 to be offset vertically or horizontally relative to the rest
715 of the text.
716 .TP 4
717 .B \fPText\fB Encoding
718 Two standard font encodings are available by default,
719 Standard (Adobe) Encoding, and ISO-Latin1 encoding.
720 ISO-Latin2 and ISO-Latin5 encodings exist in the
721 library directory, but require the use of the program
722 "ogonkify" (not included) to produce correct output on
723 a printer.
724 .TP 4
725 .B Super and Subscripts
726 Superscript and subscript are
727 designed to closely match those in TeX output, though
728 they lack the proper context-dependent kerning and
729 other fancy features of TeX.  A superscript following
730 a subscript results in a superscripted subscript.
731 To get a superscript on top of a subscript, use the
732 backspace character (see below).
733 The Normalscript style is the way to get
734 out of a sub or superscript and return to the normal
735 size and position.
736 Quick super/sub/normalscripting is available from the
737 keypad with the "\fB+\fP" (plus), "\fB-\fP" (minus),
738 and "\fBEnter\fP" keys, respectively.
739 .TP 4
740 .B Overline and Underline
741 Overlining and underlining styles
742 remain in effect until the next occurrence of a style
743 or font change.  Overlining is
744 lower if all the characters are lowercase and do not
745 include the "tall" lowercase characters.  Overlining
746 or underlining can be stopped at any time using the No
747 Line style.  Over and Underlining is *always* preferable
748 to using a line.  PostScript will adjust the over or
749 underline to the text size and extent and actually grab
750 the "_" character and compute its thickness in order to
751 draw the line.
752 .TP 4
753 .B Tabbing
754 From version 2.3, xcircuit allows embedded tab stops.
755 Tab stops must be defined before using tab-forward or
756 tab-backward.  The "Tab" keyboard key inserts an
757 embedded tab-forward instruction into a label.  Tab-stop
758 and tab-backward can be inserted using the Text->Insert
759 menu.  A tab-forward instruction moves the cursor
760 to the first defined tab stop forward of the current
761 position.  A tab-backward instruction moves the cursor
762 to the first defined tab stop backward of the current
763 position.  If no appropriate tab stop exists, the
764 instruction has no effect.
765 .TP 4
766 .B Backspace
767 The use of the backspace character is deprecated from
768 xcircuit version 2.3.  The effect of an embedded backspace
769 is more reliably produced using tab-stop and tab-backward.
770 .TP 4
771 .B Halfspace and Quarterspace
772 These options allow fine control over spacing, particularly
773 useful when writing equations.
774 .TP 4
775 .B Justification
776 Text justification always starts with the
777 default, chosen from the options in the menu, but may
778 be changed at any time using the numbers on the keypad.
779 The position of the keys on the keypad reflect the
780 point of justification: 1, 4, and 7 are right-justified,
781 7, 8, and 9 are bottom justified, 5 is centered in both
782 directions.  Since the letters drawn by xcircuit are
783 optimized for the Helvetica font, correct justification
784 is the main way to get text to come out on the PostScript
785 page in the desired way, relative to objects or boxes or
786 whatever.
787 .SH .XCIRCUITRC FILE
788 Certain parameters of the xcircuit program can be
789 initialized from a file called \fB.xcircuitrc\fP, which
790 is first searched for in the current directory, and then
791 in the user's home directory as defined by the environment
792 variable $HOME.
793 PYTHON The XCircuitrc file is written in
794 PYTHON Python (see www.python.org), with certain commands whose
795 PYTHON main purpose is to transfer data structures between
796 PYTHON the Python interpreter and XCircuit.
797 PYTHON These commands are as follows:
798 PYTHON .TP 6
799 PYTHON .B library("\fIlibname\fP" [, \fInum\fP])
800 PYTHON Loads a library named \fIlibname\fP (with or without .lps
801 PYTHON extension) into the set of built-in objects.  \fInum\fP,
802 PYTHON if specified, puts the specified library onto library page 
803 PYTHON \fInum\fP (starts at 1).
804 PYTHON .TP 6
805 PYTHON .B override("library")
806 PYTHON Causes the default libraries defined in "builtins.lps"
807 PYTHON \fInot\fP to be loaded.
808 PYTHON .TP 6
809 PYTHON .B override("colors")
810 PYTHON Causes the default colors \fInot\fP to be loaded; this will
811 PYTHON not override the allocation of black and white, however,
812 PYTHON for obvious reasons.
813 PYTHON .TP 6
814 PYTHON .B font("\fIfontname\fP")
815 PYTHON Adds a font named \fIfontname\fP (as recognized by a
816 PYTHON printer) to the menu of selectable fonts.
817 PYTHON .TP 6 
818 PYTHON .B color("\fIcolorname\fP")
819 PYTHON Adds a color named \fIcolorname\fP (standard X11
820 PYTHON conventions) to the menu of selectable colors.
821 PYTHON .TP 6
822 PYTHON .B bind("\fIkey\fP", "\fIfunction\fP")
823 PYTHON Binds the key (or button) named \fIkey\fP to the function named
824 PYTHON \fIfunction\fP.  If only one argument is given, it can be
825 PYTHON either a key name or a function name, and bind() returns
826 PYTHON the associated binding(s).  If no argument is given, then
827 PYTHON bind() returns a dictionary of all key bindings.
828 PYTHON Valid function names are listed in section "KEY BINDINGS" below.
829 PYTHON .TP 6
830 PYTHON .B unbind("\fIkey\fP", "\fIfunction\fP")
831 PYTHON Unbinds the key (or button) named \fIkey\fP from the function named
832 PYTHON \fIfunction\fP.
833 PYTHON Valid function names are listed in section "KEY BINDINGS" below.
834 PYTHON .TP 6
835 PYTHON .B set("\fItype\fP", "\fIvalue\fP")
836 PYTHON Sets internal xcircuit variables, where \fItype\fP can be one of:
837 PYTHON .sp
838 PYTHON \fBboxedit\fP
839 PYTHON .sp
840 PYTHON Where \fIvalue\fP is one of "manhattan", "rhomboid-x", "rhomboid-y",
841 PYTHON or "normal".  Determines the default way manhattan-aligned polygon
842 PYTHON edges are manupulated during edits.
843 PYTHON .sp
844 PYTHON \fBlinewidth\fP
845 PYTHON .sp
846 PYTHON Where \fIvalue\fP is a real number indicating the default
847 PYTHON width of lines.
848 PYTHON .sp
849 PYTHON set("\fBbeep\fP", "on"|"off")
850 PYTHON .sp
851 PYTHON Where \fIvalue\fP can be \fBon\fP or \fBoff\fP, depending on 
852 PYTHON whether or not you want the machine beeping at you when it
853 PYTHON gives critical warnings.
854 PYTHON .sp
855 PYTHON set("\fBcolorscheme\fP", "normal"|"inverse")
856 PYTHON .sp
857 PYTHON Where \fIvalue\fP is \fBinverse\fP to swap the two color schemes
858 PYTHON and make the second scheme appear as default.
859 PYTHON .sp
860 PYTHON \fIh\fP = newelement("\fIname\fP")
861 PYTHON .sp
862 PYTHON Creates a new element and returns a handle (pointer) \fIh\fP to it which
863 PYTHON can be used to get and set element attributes.  Valid names are
864 PYTHON "Arc", "Spline", "Polygon", "Object Instance", "Label", and "Path".
865 PYTHON .sp
866 PYTHON \fId\fP = getattr(\fIh\fP)
867 PYTHON .sp
868 PYTHON Creates a dictionary \fId\fP of attributes for the element with handle
869 PYTHON \fIh\fP.  Dictionary keys depend on the element.
870 PYTHON .sp
871 PYTHON setattr(\fIh\fP, \fId\fP)
872 PYTHON .sp
873 PYTHON Applies the dictionary \fId\fP key:value pairs to the element pointed to
874 PYTHON by handle \fIh\fP.
875 PYTHON .sp
876 PYTHON \fId\fP = getpage(\fIvalue\fP)
877 PYTHON .sp
878 PYTHON Returns a dictionary \fId\fP containing information about the page \fIvalue\fP.
879 PYTHON If \fIvalue\fP is not specified, returns information about the current page.
880 PYTHON The dictionary includes a list "\fIparts\fP" of handles to every element drawn
881 PYTHON on the indicated page.
882 PYTHON .sp
883 PYTHON \fId\fP = getlibrary(\fIname\fP)
884 PYTHON .sp
885 PYTHON Returns a dictionary of objects for the indicated library,
886 PYTHON referenced by \fIname\fP, or by page number.  The dictionary contains a
887 PYTHON list "\fIobjects\fP" of names of every object in the library.
888 PYTHON .sp
889 PYTHON \fId\fP = getobject(\fIname\fP)
890 PYTHON .sp
891 PYTHON Returns a dictionary containing all information about an object, which
892 PYTHON is referenced by \fIname\fP.  The dictionary contains keys "\fIname\fP",
893 PYTHON containing the object name, "\fIwidth\fP" and "\fIheight\fP", a
894 PYTHON list "\fIparts\fP" containing handles to each element comprising the
895 PYTHON object, and a list "\fIparameters\fP" containing all the parameters
896 PYTHON defined for the object and their default values.
897 PYTHON .sp
898 PYTHON zoom(\fIfactor\fP)
899 PYTHON .sp
900 PYTHON Zooms by amount \fIfactor\fP.  Values greater than 1 indicate a zoom in;
901 PYTHON values less than 1 indicate a zoom out.
902 PYTHON .sp
903 PYTHON pan(\fIposition\fP)
904 PYTHON .sp
905 PYTHON Centers the screen on the (user) coordinate \fIposition\fP, which can be
906 PYTHON either a (X,Y) tuple or two integers X, Y.
907 PYTHON .sp
908 PYTHON refresh()
909 PYTHON .sp
910 PYTHON Refreshes the screen.  The screen is automatically refreshed after every
911 PYTHON Python command, but the \fBrefresh()\fP function can be used along with the
912 PYTHON \fBpause()\fP function for animation effects. 
913 PYTHON .sp
914 PYTHON pause(\fIdelay\fP)
915 PYTHON .sp
916 PYTHON Pauses for \fIdelay\fP seconds (is a floating-point number).  Useful in
917 PYTHON conjunction with \fBrefresh()\fP for animation effects.
918 PYTHON .sp
919 PYTHON \fIt\fP = getcursor()
920 PYTHON .sp
921 PYTHON Returns a tuple \fIt\fP containing the current X and Y position of the cursor.
922 PYTHON .sp
923 PYTHON .sp
924 PYTHON \fIt\fP = getwindow()
925 PYTHON .sp
926 PYTHON Returns a tuple \fIt\fP containing the current window width and height.
927 PYTHON .sp
928 PYTHON popupprompt(\fIprompt\fP, \fIfunction\fP)
929 PYTHON .sp
930 PYTHON Generates a popup window with text entry.  \fIprompt\fP will be printed above
931 PYTHON the text entry window.  Python function \fIfunction\fP (referenced by name)
932 PYTHON will be called when clicking the "Okay" button or pressing the Return key
933 PYTHON ends the text entry.  The function will be passed the contents of the text
934 PYTHON window as its (only) parameter.
935 PYTHON .sp
936 PYTHON filepopup(\fIprompt\fP, \fIfunction\fP)
937 PYTHON .sp
938 PYTHON Operates exactly like \fBpopupprompt()\fP, except that the window is a file
939 PYTHON browser instead of a simple text entry window.
940 PYTHON .sp
941 PYTHON .sp
942 PYTHON simplepopup(\fIprompt\fP, \fIfunction\fP)
943 PYTHON .sp
944 PYTHON Operates exactly like \fBpopupprompt()\fP, except that there is no text entry
945 PYTHON window, only a prompt string and the choice of "Okay" and "Cancel".
946 PYTHON .sp
947 PYTHON newbutton(\fIparent\fP, \fIname\fP, \fIfunction\fP)
948 PYTHON .sp
949 PYTHON Generates a new menu button under the menu cascade labeled \fIparent\fP.
950 PYTHON The new button will display the label \fIname\fP, and pushing the button
951 PYTHON will call the Python function \fIfunction\fP.
952 PYTHON .sp
953 PYTHON page(\fInumber\fP)
954 PYTHON .sp
955 PYTHON Go to the page numbered \fInumber\fP.
956 PYTHON .sp
957 PYTHON reset()
958 PYTHON .sp
959 PYTHON Erases the current page unconditionally, unless dependencies such as a link
960 PYTHON to a symbol exist.
962 NOINTERP Commands are:
963 NOINTERP .TP 6
964 NOINTERP .B library \fIlibname\fP
965 NOINTERP Loads a library named \fIlibname\fP (with or without .lps
966 NOINTERP extension) into the set of built-in objects.
967 NOINTERP .TP 6
968 NOINTERP .B override default library
969 NOINTERP Causes the default libraries defined in "builtins.lps"
970 NOINTERP \fInot\fP to be loaded.
971 NOINTERP .TP 6
972 NOINTERP .B override default colors
973 NOINTERP Causes the default colors \fInot\fP to be loaded; this will
974 NOINTERP not override the allocation of black and white, however,
975 NOINTERP for obvious reasons.
976 NOINTERP .TP 6
977 NOINTERP .B font \fIfontname\fP
978 NOINTERP Adds a font named \fIfontname\fP (as recognized by a
979 NOINTERP printer) to the menu of selectable fonts.
980 NOINTERP .TP 6 
981 NOINTERP .B color \fIcolorname\fP
982 NOINTERP Adds a color named \fIcolorname\fP (standard X11
983 NOINTERP conventions) to the menu of selectable colors.
984 NOINTERP .TP 6
985 NOINTERP .B set \fItype\fP \fIvalue\fP
986 NOINTERP Sets internal xcircuit variables, where \fItype\fP can be one of:
987 NOINTERP .sp
988 NOINTERP \fBboxedit\fP
989 NOINTERP .sp
990 NOINTERP Where \fIvalue\fP is one of "manhattan", "rhomboid-x", "rhomboid-y",
991 NOINTERP or "normal".  Determines the default way manhattan-aligned polygon
992 NOINTERP edges are manupulated during edits.
993 NOINTERP .sp
994 NOINTERP \fBlinewidth\fP
995 NOINTERP .sp
996 NOINTERP Where \fIvalue\fP is a real number indicating the default
997 NOINTERP width of lines.
998 NOINTERP .sp
999 NOINTERP \fBbeep\fP
1000 NOINTERP .sp
1001 NOINTERP Where \fIvalue\fP can be \fBon\fP or \fBoff\fP, depending on 
1002 NOINTERP whether or not you want the machine beeping at you when it
1003 NOINTERP gives critical warnings.
1004 NOINTERP .sp
1005 NOINTERP \fBcolorscheme\fP
1006 NOINTERP .sp
1007 NOINTERP Where \fIvalue\fP is \fBinverse\fP to swap the two color schemes
1008 NOINTERP and make the second scheme appear as default.
1010 TCL The startup file is written in Tcl.  The command-line interface can
1011 TCL be found in the online documentation on the website
1012 TCL .sp
1013 TCL \fBhttp://www.opencircuitdesign.com/xcircuit/\fP.
1014 TCL .sp
1016 .SH CRASH RECOVERY
1017 XCircuit implements a crash recovery system by which a copy of the current
1018 file is made every 15 minutes (see Xdefaults, below, for changing this
1019 value).  XCircuit deletes this file upon a normal exit.  If, however,
1020 XCircuit crashes or is terminated by Control-C or other sudden death,
1021 the backup copy will remain.  On startup, XCircuit checks the /tmp
1022 directory for any XCircuit backup files belonging to the user.  If one
1023 is found, XCircuit will prompt the user for recovery.  Note that the
1024 backup is unique in that it contains a copy of the entire user space at
1025 the time of the crash.  Filenames may get overwritten, as the backup
1026 will treat all pages as belonging to the same file.
1028 .SH KEY BINDINGS
1029 As noted above, keys can be bound and unbound through command-line
1030 functions "bind" and "unbind".  Default key bindings are used throughout
1031 this manual page.  Key names use the notation of
1032 /usr/X11R6/include/keysymdef.h, but with the notation "XK_" being
1033 optional, and including the addition of prefixes "Shift_", "Control_",
1034 "Capslock_", and "Alt_", which may be used in any combination.  Note
1035 that "Shift_" is not used for ASCII characters (e.g., "A" is used
1036 instead of "Shift_a") unless used in combination with other special
1037 keys (such as "Control_Shift_A" to distinguish from "Control_a",
1038 should that be desired).  "Button1", "Button2", and "Button3" are
1039 also valid names indicating functions attached to the mouse buttons
1040 in normal drawing mode.  Valid functions which may be bound are as
1041 follows, with their default values given:
1045    Function name        Function performed         Default key binding
1046    ---------------------------------------------------------------------
1047    "Page",              change page,               Number keys 1-9 and 0
1048    "Justify",           change text justification, Keypad keys 1-9
1049    "Superscript",       set text superscript,      Keypad +
1050    "Subscript",         set text subscript,        Keypad -
1051    "Normalscript",      cancel sub/superscript,    Keypad Enter
1052    "Nextfont",          change to next font,       Alt-f
1053    "Boldfont",          change to bold font,       Alt-b
1054    "Italicfont",        change to italic font,     Alt-i
1055    "Normalfont",        cancel italic/bold,        Alt-n
1056    "Underline",         generate underline,        Alt-u
1057    "Overline",          generate overline,         Alt-o
1058    "ISO Encoding",      change to ISO encoding,    Alt-e
1059    "Return",            embedded return character, Alt-Enter
1060    "Halfspace",         embedded half-space,       Alt-h
1061    "Quarterspace",      embedded quarter-space,    Alt-q
1062    "Special",           special character,         Alt-c
1063    "Parameter",         embedded parameter,        Alt-p
1064    "Edit Break",        break at point,            x
1065    "Edit Delete",       delete point,              d, Delete
1066    "Edit Insert",       insert point,              i, Insert
1067    "Edit Next",         go to next point,          e
1068    "Attach",            attach line to object,     A
1069    "Next Library",      go to next library,        l
1070    "Library Directory", library directory,         L
1071    "Library Move",      arrange library objects,   M
1072    "Library Copy",      get object in copy mode,   c
1073    "Library Edit",      edit library name,         E
1074    "Library Delete",    delete library object,     D
1075    "Library Duplicate", duplicate object,          C
1076    "Library Hide",      hide library object,       H
1077    "Page Directory ",   page directory,            P
1078    "Library Pop",       return from library,       <
1079    "Help",              generate help screen,      h, ?
1080    "Redraw",            redraw the window,         space
1081    "View",              fit page to window,        v
1082    "Zoom In",           zoom in,                   Z
1083    "Zoom Out",          zoom out,                  z
1084    "Pan",               center pan,                p
1085    "Double Snap",       increase snap space,       +
1086    "Halve Snap",        decrease snap space,       -
1087    "Pan Left",          pan left one-half page,    Left arrow
1088    "Pan Right",         pan right one-half page,   Right arrow
1089    "Pan Up",            pan up one-half page,      Up arrow
1090    "Pan Down",          pan down one-half page,    Down arrow
1091    "Write",             popup output window,       W
1092    "Rotate",            Rotate,                    r,R,o,O
1093    "Flip X",            Flip horizontal,           f
1094    "Flip Y",            Flip vertical,             F
1095    "Snap",              Snap to grid,              S
1096    "Pop",               Return from object edit,   <
1097    "Push",              Edit object,               >
1098    "Delete",            Delete element,            d
1099    "Select",            Select element,            Select
1100    "Box",               Create box,                b
1101    "Arc",               Create arc,                a
1102    "Text",              Create label,              t
1103    "Exchange",          Exchange vertical order,   X
1104    "Copy",              Copy element,              c
1105    "Join",              Join into path,            j
1106    "Unjoin",            Split path into elements,  J
1107    "Spline",            Create spline,             s
1108    "Edit",              Edit element,              e
1109    "Undelete",          Undelete last deleted,     u
1110    "Select Save",       Make object from selected, M,m
1111    "Unselect",          Unselect element,          x
1112    "Dashed",            Set line style to dashed,  |
1113    "Dotted",            Set line style to dotted,  :
1114    "Solid",             Set line style to solid,   _
1115    "Prompt",            Execute from command line, %
1116    "Dot",               Place dot at location,     .
1117    "Exit",              Exit xcircuit              Ctrl-Alt-q
1118    "Netlist",           Generate a netlist,        Alt-q
1119    "Swap",              Swap schematic, symbol,    /
1120    "Pin Label",         Create pin label,          T
1121    "Info Label",        Create info label,         I
1122    "Connectivity",      Show wire connectivity,    Alt-w
1123    "Sim",               Generate sim netlist,      Alt-s
1124    "SPICE",             Generate SPICE netlist,    Alt-S
1125    "PCB",               Generate PCB netlist,      Alt-p
1126    "SPICE Flat"         Generate flattened SPICE,  Alt-f
1127    ------------------------------------------------------------------
1130 2-Button mouse users may find it useful to forego the Shift-Button1
1131 combination and instead put the following commands in the startup
1132 script:
1135 bind('Escape', 'Cancel')
1137 unbind('Button3', Cancel')
1139 bind('Button3', 'Finish')
1142 This will move the 3rd mouse button bindings to the "Escape" key, and
1143 duplicate the 2nd mouse button bindings onto the 3rd.
1146 .SH X DEFAULTS
1147 The color scheme of xcircuit has a default setup, but accepts 
1148 alternate color schemes using the following keywords which can be put
1149 in the X Defaults (.Xdefaults, .Xresources) file, such as:
1151 .EX 0
1152   !
1154   ! Sample X defaults for xcircuit, black-on-white version
1156   !
1158   xcircuit*foreground     : Black
1160   xcircuit*background     : White
1162   xcircuit*gridcolor      : Gray85
1164   xcircuit*snapcolor      : Orange
1166   xcircuit*selectcolor    : Blue
1168   xcircuit*querycolor     : Green
1170   xcircuit*axescolor      : NavajoWhite3
1172   xcircuit*offbuttoncolor : Gray30
1174   xcircuit*auxiliarycolor : MediumOrchid1
1177 Two color schemes are supported at a time, ostensibly for those people
1178 who prefer the lessened eye strain of a white-on-black scheme.  The
1179 names of the secondary colors are the same as those for the primary
1180 colors, but followed by "2", e.g., "xcircuit*foreground2".
1183 One other resource defines the number of minutes between automatic saves
1184 to the temporary file (in case of a crash or emergency Ctrl-C exit):
1186 .EX 0
1187   xcircuit.timeout              : 15
1190 Xcircuit also recognizes the core resources, such as width and height:
1192 .EX 0
1193   xcircuit.width                : 600
1195   xcircuit.height               : 500
1198 All xcircuit foreground and background colors are taken from the
1199 Xdefaults foreground and background.  To get, for instance, white-on-black
1200 menus and buttons with a black-on-white drawing area, use the following:
1202 .EX 0
1203   xcircuit*foreground           : White
1205   xcircuit*background           : DarkSlateGray
1207   xcircuit.foreground           : Black
1209   xcircuit.background           : White
1211 This will ensure that only the drawing area is black-on-white, but all other
1212 windows will appear in the less eye-straining white-on-black.
1214 Five different fonts can be specified in the Xdefaults.  \fihelpfont\fp is
1215 the style of fonts on the help popup window.  \fifilefont\fp is the style
1216 of fonts in the list of files in the file selection popup window.  \fitextfont\fp
1217 is the style of font for entering text in the popup dialog boxes.  \fititlefont\fp
1218 is the style of font for the cascade menu titles.  All other fonts take the
1219 type \fifont\fp. For example:
1221   xcircuit*font           : *times-bold-r-normal--14*
1223   xcircuit*helpfont       : *times-medium-r-normal--12*
1225   xcircuit*filefont       : *times-medium-r-normal--14*
1227   xcircuit*textfont       : *courier-medium-r-normal--14*
1229   xcircuit*titlefont      : *times-bold-r-normal--18*
1230 .SH FILES
1231 The file path used by xcircuit to find library files is system-dependent
1232 (i.e., can be changed at compile time), and can be overridden in many
1233 ways (in .xcircuitrc or by the XCIRCUIT_LIB_DIR environment variable),
1234 but by default is:
1236 .TP 28
1237 .B LIBDIR
1239 .TP 15 
1240 .B xcircps2.pro
1241 PostScript prolog appended to each file
1242 .TP 15 
1243 PYTHON .B xcstartup.py
1244 TCL .B xcstartup.tcl
1245 NOINTERP .B startup.script
1246 This startup script contains commands of the type
1247 PYTHON \fBlibrary\fP("\fIname\fP", \fInumber\fP
1248 TCL \fBlibrary\fP \fIname\fP \fInumber\fP
1249 NOINTERP \fBlibrary\fP \fIname\fP \fInumber\fP
1250 which cause the designated library \fIname\fP to be immediately loaded
1251 into library page \fInumber\fP.  The startup script is also responsible
1252 for loading fonts, and may also be used to load colors on the color
1253 palette, set other options, and execute commands.
1254 .TP 15
1255 .B generic.lps, analog.lps, digital.lps, avlsi.lps, analoglib2.lps
1256 Files containing pre-compiled circuit elements.  The \fB.lps\fP extension
1257 is unique for xcircuit libraries.
1258 .TP 15
1259 .B fonts
1260 This subdirectory contains font definition files for xcircuit's
1261 vector-drawn fonts.  Characters are defined by xcircuit objects and
1262 stored in a \fB.lps\fP library.  The encoding scheme and other font
1263 information is stored in a \fB.xfe\fP ("xcircuit font encoding")
1264 file.
1265 .TP 15
1266 .B ~/.xcircuitrc \fPor\fB ./xcircuitrc
1267 Personal xcircuit initializer;  commands are outlined above.
1268 Libraries listed in this file will be appended to the builtin libraries.
1269 .SH ENVIRONMENT VARIABLES
1270 \fBxcircuit\fP understands the following environment variables:
1272 .TP 15
1273 .B TMPDIR
1274 Directory for temporary (e.g., backup) files (defaults to TEMP_DIR).
1276 .TP 15
1277 .B XCIRCUIT_LIB_DIR
1278 Directory where xcircuit libraries and startup files can be found
1279 (defaults to BUILTINS_DIR).
1281 .TP 15
1282 .B XAPPLRESDIR
1283 Directory where the xcircuit application defaults can be found
1284 (defaults to RESOURCES_DIR)
1286 .TP 15
1287 .B HOME
1288 Directory where xcircuit will look for startup files, after searching the
1289 current directory.
1291 .TP 15
1292 .B HOST, HOSTNAME, USER
1293 Environment variables which xcircuit uses to fill in header information
1294 in the PostScript output (HOST and HOSTNAME are equivalent).
1296 .SH BUGS
1297 PostScript printers have device-dependent limits on the number of
1298 statements within a "def" definition.  If an object definition has an
1299 unusually large number of components, xcircuit will flag a warning when
1300 writing the file.  However, there is no way to ensure that a file will be
1301 accepted by a given printer.  The best way to avoid the problem is to make
1302 sure that large drawings make good use of hierarchically nested user-defined
1303 objects.  Note that printer errors arising from this problem have not been
1304 observed in practice, and given the typical size of on-board memory on most
1305 modern laser printers, probably never will be.
1307 A list of bugs can be found in the Manifest file in the source directory.
1308 .SH ONLINE TUTORIAL
1309 Look for the xcircuit online tutorial at
1311 http://opencircuitdesign.com/xcircuit/tutorial/tutorial.html
1312 .SH SEE ALSO
1313 xfig(1), another powerful freeware drawing program worthy of mention
1314 (see www.xfig.org). 
1315 Another schematic capture package worth noting is "gschem" from the
1316 gEDA package (see www.geda.seul.org).
1317 .SH NOTES
1318 PostScript is a registered trademark of Adobe Systems Incorporated.
1320 XCircuit Copyright (c) 2002 Tim Edwards.  XCircuit is freely distributed
1321 under a generous public license.  See the source distribution for details.
1323 Xw widget set Copyright (c) 1988 by Hewlett-Packard Company and the
1324 Massachusetts Institute of Technology.
1325 .SH AUTHOR
1326 Tim Edwards <tim@opencircuitdesign.com>.  Thanks to Tomas Rokicki for
1327 the PostScript routine which manufactures a Symbol-Oblique font.
1328 Thanks to Dave Gillespie and John Lazzaro for the program "analog"
1329 on which the graphical interface of xcircuit is (roughly) based.
1330 Thanks to many beta-testers, some of whom were kind enough to send
1331 patches.  Most contributors have been named in the Manifest file in
1332 the source distribution.