summaryrefslogtreecommitdiff
path: root/graphics/circuit_macros/doc/body.tex
diff options
context:
space:
mode:
Diffstat (limited to 'graphics/circuit_macros/doc/body.tex')
-rw-r--r--graphics/circuit_macros/doc/body.tex543
1 files changed, 291 insertions, 252 deletions
diff --git a/graphics/circuit_macros/doc/body.tex b/graphics/circuit_macros/doc/body.tex
index 38aff51f3b..cbb2fdb058 100644
--- a/graphics/circuit_macros/doc/body.tex
+++ b/graphics/circuit_macros/doc/body.tex
@@ -45,7 +45,6 @@
\begin{multicols}{2}
\tableofcontents
\end{multicols}
-%\enlargethispage{\baselineskip}
%
\xection{Introduction\label{Introduction:}}
\begin{quotation}\noindent
@@ -339,7 +338,6 @@ A derivative of this method that allows the insertion of
You can put several diagrams into a single source file.
Make each diagram the body of a \latex macro, as shown:
-%\enlargethispage{\baselineskip}
\par
\verb|\newcommand{\diaA}{%|\NVL
\verb|.PS|\NVL
@@ -631,7 +629,6 @@ The exact typeset size of formatted text can be obtained
as described in \SR{Interaction:}. The second occurrence
associates one or more strings with an object, e.g., the following writes
two words, one above the other, at the centre of an ellipse:
-%\enlargethispage{\baselineskip}
\verb|ellipse "\bf Stop" "\bf here"|
@@ -725,7 +722,6 @@ the looping facility
{\sl anything}\verb| }|,
\noindent%
-%\enlargethispage{\baselineskip}
operating-system commands, \pic macros, and external file inclusion.
\xection{Two-terminal circuit elements\label{Basictwo:}}
@@ -831,14 +827,15 @@ were added after the previously shown source:
\end{itemize}
\subsection{The two-terminal elements\label{Twoterminal:}}
-The two-terminal elements are shown in \FRS{CctTable} to~\REF{Diodes}
-and \FRS{Fuses} to~\REF{Switches}.
+The two-terminal elements are shown in \FRS{CctTable}
+% to~\REF{Diodes} and \FRS{Fuses}
+to~\REF{Switches}.
Several elements are included more than once to illustrate
some of their arguments, which are listed in \SR{defines}.
\enlargethispage{\baselineskip}
\begin{figure}[h!]
- \input CctTable
- \ifpdf\vspace*{-\baselineskip}\fi%
+ \input CctTableMan
+% \ifpdf\vspace*{-\baselineskip}\fi%
\caption{Basic two-terminal elements, showing some variations.}
\label{CctTable}
\end{figure}
@@ -849,63 +846,56 @@ If the argument is blank,
the element is drawn from the current position in the current drawing
direction along a default length.
The other arguments produce variants of the default elements.
-\begin{figure}[t!]
- \input Sources
- \ifpdf\vspace*{-0.5\baselineskip}\fi%
- \caption{Sources and source-like elements.}
- \label{Sources}
- \end{figure}
-\begin{figure}[t!]
- \input Diodes
- \caption{The macro
- {\tt diode(\linespec,B|CR|D|L|LE[R]|P[R]|S|T|V|v|w|Z|{\sl chars},[R][E])}.
- Appending {\tt K} to the second argument draws an open arrowhead.}
- \label{Diodes}
+\begin{figure}[hbt]
+ \input AmpTableMan
+ \caption{Amplifier, delay, and integrator.}
+ \label{AmpTable}
\end{figure}
-Thus, for example,
+Thus, for example,
+\par
{\tt resistor(up\_ 1.25,7)}
-
+\par
\noindent%
draws a resistor 1.25 units long up from the current position, with $7$
vertices per side.
The macro {\tt up\_} evaluates to {\tt up} but also resets the current
directional parameters to point up.
-\FR{Emarrows} contains radiation-effect arrows for embellishing two-terminal
-and other macros.
-The arrow stems are named {\sl A1}, {\sl A2},
-and each pair is drawn in a \verb|[]| block, with
-the names {\sl Head} and {\sl Tail} defined to
-aid placement near another device. The second argument specifies
-absolute angle in degrees (default 135 degrees).
-\begin{figure}[h!t]
- \input Emarrows
- \caption{Radiation arrows: {\tt em\_arrows({\sl type, angle, length})}}
- \label{Emarrows}
+\begin{figure}[hbt]
+ \input SourcesMan
+% \ifpdf\vspace*{-0.5\baselineskip}\fi%
+ \caption{Sources and source-like elements.}
+ \label{Sources}
\end{figure}
-The arrows are drawn relative to the diode direction by the {\tt LE}
-option in \FR{Diodes}. For absolute arrow directions, one can
-define a wrapper (see \SR{Writing:}) for the {\tt diode} macro to draw arrows
-at 45 degrees, for example:
-{\tt define(`myLED',`diode(`\$1'); em\_arrows(N,45)
- with .Tail at last [].ne')}
+The {\tt AC} and {\tt S} options of the {\tt source} macro in \FR{Sources}
+illustrate the need
+to draw a single cycle of a sinusoid or approximate sinusoid.
+As a convenience,
+the macro {\tt ACsymbol(at {\sl position, length, height,}
+ [A]U|D|L|R|{\sl degrees})} is included as an interface to
+the {\tt sinusoid} macro. For example to add the sumbol to an ebox:
+\par
+{\tt ebox; $\lbrace$\ ACsymbol(at last [],{,},dimen\_/8) $\rbrace$}
+
+\begin{figure}[hbt]
+ \input DiodesMan
+ \caption{The macro
+ {\tt diode(\linespec,B|CR|D|L|LE[R]|P[R]|S|T|V|v|w|Z|{\sl chars},[R][E])}.
+ Appending {\tt K} to the second argument draws an open arrowhead.}
+ \label{Diodes}
+ \end{figure}
\begin{figure}[t!]
- \input Fuses
+ \input FusesMan
\caption{Variations of the macros
- {\tt fuse(\linespec, A|dA|B|C|D|E|S|HB|HC, {\sl wid}, {\sl ht})}
+ {\tt fuse(\linespec, A|dA|B|C|D|E|S|HB|HC|SB, {\sl wid}, {\sl ht})}
and {\tt cbreaker(\linespec,L|R,D|T|TS)}.}
\label{Fuses}
\end{figure}
\begin{figure}[t!]
- \input AmpTable
- \caption{Amplifier, delay, and integrator.}
- \label{AmpTable}
- \end{figure}
-\begin{figure}[t!]
- \input Switches
+ \input SwitchesMan
\caption{The
{\tt switch(\linespec,L|R,{\sl chars},L|B|D)}
macro is a wrapper for the macros
@@ -915,66 +905,89 @@ at 45 degrees, for example:
{\tt dswitch(\linespec,R,W[ud]B[K] {\sl chars})} shown.
The switch is drawn in the current drawing direction.
A second-argument {\tt R} produces a mirror
- image with respect to the drawing direction.}
+ image with respect to the drawing direction.
+ The separately defined macros {\tt Proxim} and {\tt Magn}
+ embellish switches in the second-last row.}
\label{Switches}
\end{figure}
+
Most of the two-terminal elements are oriented; that is, they have
-a defined direction or polarity. Several element macros include an argument
-that reverses polarity, but there is also a more general mechanism,
-as follows.
+a defined direction or polarity. Several element macros include an
+argument that reverses polarity, but there is also a more general
+mechanism, as follows.
The first argument of the macro
-
+\par
{\tt reversed(`}{\sl macro name}{\tt',}{\sl macro arguments}{\tt )}
-
+\par
\noindent
is the name of a two-terminal element in quotes, followed by the
element arguments. The element is drawn with reversed direction.
Thus,
-
+\par
{\tt diode(right\_ 0.4); reversed(`diode',right\_ 0.4)}
-
+\par
\noindent
draws two diodes to the right, but the second one points left.
+\begin{figure}[bt]
+ \input EmarrowsMan
+ \caption{Radiation arrows: {\tt em\_arrows({\sl type, angle, length})}}
+ \label{Emarrows}
+ \end{figure}
Similarly, the macro
-
+\par
{\tt resized(}{\sl factor},`{\sl macro name}',{\sl macro arguments}{\tt )}
-
+\par
\noindent
can be used to resize the body of an element by temporarily multiplying
the {\tt dimen\_} macro by {\sl factor}. More general resizing should be
done by redefining {\tt dimen\_} as described in \SR{Circuitscaling:}.
These two macros can be nested; the following scales the above example
by 1.8, for example
-
+\par
{\tt resized(1.8,`diode',right\_ 0.4);}
{\tt resized(1.8,`reversed',`diode',right\_ 0.4)}
+\FR{Emarrows} contains radiation-effect arrows for embellishing two-terminal
+and other macros.
+The arrow stems are named {\sl A1}, {\sl A2},
+and each pair is drawn in a \verb|[]| block, with
+the names {\sl Head} and {\sl Tail} defined to
+aid placement near another device. The second argument specifies
+absolute angle in degrees (default 135 degrees).
+The arrows are drawn relative to the diode direction by the {\tt LE}
+option in \FR{Diodes}. For absolute arrow directions, one can
+define a wrapper (see \SR{Writing:}) for the {\tt diode} macro to draw arrows
+at 45 degrees, for example:
+\par
+{\tt define(`myLED',`diode(`\$1'); em\_arrows(N,45)
+ with .Tail at last [].ne')}
+
\FR{Variable} shows some two-terminal elements with
arrows or lines overlaid to indicate variability using the macro
-
+\par
{\tt variable(`}{\sl element}{\tt',{\sl type},{\sl angle},{\sl length})},
\noindent
-where {\sl type} is one of {\tt A, P, L, N,} with {\tt C} or {\tt S}
+where {\sl type} is one of {\tt A, P, L, N, NN} with {\tt C} or {\tt S}
optionally appended to indicate continuous or stepwise variation.
Alternatively, this macro
can be invoked similarly to the label macros in
\SR{Labels:} by specifying an empty first argument;
thus, the following line draws the resistor in \FR{Variable}:
-
+\par
{\tt resistor(down\_ dimen\_); variable(,uN)}
\begin{figure}[h!t]
\vspace*{-\baselineskip}
- \input Variable
+ \input VariableMan
\caption{Illustrating
{\tt variable(`{\sl element}',%
-[A|P|L|[u]N][C|S],{\sl angle},{\sl length})}.
- For example,\break {\tt variable(`capacitor(down\_ dimen\_)')} draws
- the leftmost capacitor shown above, and {\tt variable(`resistor(down\_
- dimen\_)',uN)} draws the resistor. The default angle is
+[A|P|L|[u]N]|[u]NN]][C|S],{\sl angle},{\sl length})}.
+ For example,\break {\tt variable(`resistor(down\_ dimen\_)',A)} draws
+ the leftmost resistor shown above, and {\tt variable(`resistor(down\_
+ dimen\_)',uN)} draws the third resistor. The default angle is
45${}^{\circ}$, regardless of the direction of the element. The array
on the right shows the effect of the second argument.}
\label{Variable}
@@ -988,7 +1001,6 @@ just been drawn. Many variations of this are possible:
\verb|arrow right arrowht from last line.start+(alpha,0) "$i_1$" above|
-%\enlargethispage{\baselineskip}
Macros have been defined to simplify labelling two-terminal
elements, as shown in \FR{currents}.
The macro
@@ -1000,7 +1012,7 @@ The macro
draws an arrow from the start of the last-drawn two-terminal element
{\sl frac} of the way toward the body.
\begin{figure}[h!t]
- \ifpdf\vspace*{-0.5\baselineskip}\fi%
+% \ifpdf\vspace*{-0.5\baselineskip}\fi%
\input currents
\caption{Illustrating {\tt b\_current, larrow,} and {\tt rarrow}.
The drawing direction is to the right.}
@@ -1029,14 +1041,7 @@ argument is assumed to be in math mode unless
it begins with {\tt sprintf} or a double
quote, in which case the argument is copied literally. The third argument
specifies the separation from the element.
-%\begin{figure}[hbt]
-% \input lrarrows
-% \caption{The {\tt larrow} and {\tt rarrow} macros draw
-% reference-direction arrows adjacent to the element.}
-% \label{lrarrows}
-% \end{figure}
-\pagebreak%
\subsection{Labels\label{Labels:}}
Special macros for labeling two-terminal elements are included:
\par
@@ -1086,33 +1091,32 @@ assumed to be in math mode.
The length and position of a two-terminal element
are defined by a straight-line segment and, possibly, a direction, so
four numbers are required to place the element as in the following example:
-
+\par
{\tt resistor(from (1,1) to (2,1))}.
\noindent
However, \pic has a very useful concept of the current point (explicitly
named {\tt Here}); thus,
-
+\par
{\tt resistor(to (2,1))}
-
+\par
\noindent
is equivalent to
-
+\par
{\tt resistor(from Here to (2,1)).}
Any defined position can be used; for example, if {\sl C1} and {\sl L2}
are names of previously defined two-terminal elements,
then, for example, the following places the resistor:
-
+\par
{\tt resistor(from L2.end to C1.start)}
A line segment starting at the current position can also be defined using
a direction and length.
To draw a resistor up $d$ units from the current position, for example:
-
+\par
{\tt resistor(up\_ d)}
-\noindent
\Pic stores the current drawing direction,
the latter unfortunately limited to {\tt up, down, left, right,}
which is assumed when necessary.
@@ -1149,6 +1153,14 @@ The macro {\tt eleminit\_} in the two-terminal elements invokes
to establish element length and direction.
As shown in \FR{Oblique},
+\begin{figure}[h!b]
+\vspace{-\baselineskip}
+ \parbox{4.5in}{\small \verbatiminput{Oblique.m4}}%
+ \hfill\raise-0.7in\llap{\hbox{\input Oblique }}%
+ \vspace{-\baselineskip}
+ \caption{Illustrating elements drawn at oblique angles.}
+ \label{Oblique}
+ \end{figure}
``{\tt Point\_(-30); resistor}'' draws a resistor
along a line with slope of~-30 degrees, and ``{\tt rpoint\_(to Z)}'' sets
the current direction cosines to point from the current location to location Z.
@@ -1167,17 +1179,9 @@ The figure also illustrates that any commas within \Mfour arguments must
be treated specially because the arguments are separated by commas.
Argument commas are protected either by parentheses as in
{\tt inductor(from Cr to Cr+vec\_(elen\_,0))}, or by multiple single quotes
-as in {\tt ``,'',} as necessary.
+as in {\tt `{`,'}',} as necessary.
Commas also may be avoided by writing
{\tt 0.5 between L and T} instead of {\tt 0.5<L,T>.}
-\begin{figure}[h!t]
-\vspace{-\baselineskip}
- \parbox{4.5in}{\small \verbatiminput{Oblique.m4}}%
- \hfill\raise-0.7in\llap{\hbox{\input Oblique }}%
- \vspace{-\baselineskip}
- \caption{Illustrating elements drawn at oblique angles.}
- \label{Oblique}
- \end{figure}
\subsection{Series and parallel circuits\label{Seriesandparallel:}}
@@ -1277,7 +1281,6 @@ element, {\tt Sep={\sl val}}; applies only to that branch.
An element may have normal arguments but should
not change the drawing direction.
-%\pagebreak%
\xection{Composite circuit elements\label{Composite:}}
Many basic elements are not two-terminal. These elements are usually enclosed in
a \verb|[ ]| \pic block, and contain named interior locations and components.
@@ -1335,6 +1338,15 @@ drawn elements.
A few composite symbols derived from two-terminal elements
are shown in \FR{Composite}.
+
+The ground symbol is shown in \FR{Grounds}.
+The first argument specifies position; for example, the two lines shown
+have identical effect:
+\par
+{\tt move to (1.5,2); ground
+\par
+ground(at (1.5,2)) }
+
\begin{figure}[h!t]
\vspace*{-0.5ex}
\input Composite
@@ -1344,15 +1356,8 @@ are shown in \FR{Composite}.
\label{Composite}
\end{figure}
-The ground symbol is shown in \FR{Grounds}.
-The first argument specifies position; for example, the two lines shown
-have identical effect:
-
-{\tt move to (1.5,2); ground
-
-ground(at (1.5,2)) }
-
-\noindent The second argument truncates
+%\noindent
+The second argument truncates
the stem, and the third defines the symbol type.
The fourth argument specifies the angle at which the symbol is drawn,
with D (down) the default.
@@ -1361,10 +1366,10 @@ is set using the
{\tt setdir\_( U|D|L|R|{\sl degrees, default} R|L|U|D|{\sl degrees} )}
macro and reset at the end using {\tt resetdir\_}.
\begin{figure}[ht!]
- \input Grounds
+ \input GroundsMan
\caption{The
{\tt ground( at }{\sl position}{\tt,
- T, N|F|S|L|P|E, U|D|L|R|{\sl degrees} )}
+ T, N|F|S|L|P[A]|E, U|D|L|R|{\sl degrees} )}
macro.}
\label{Grounds}
\end{figure}
@@ -1374,17 +1379,18 @@ The arguments of the macro
T, A|L|T|S|D|P|F, U|D|L|R|{\sl degrees} )}
shown in \FR{Antennas} are similar to those of {\tt ground}.
\begin{figure}[h!t]
- \input Antennas
+ \input AntennasMan
\caption{Antenna symbols, with macro arguments shown above and
terminal names below.}
\label{Antennas}
\end{figure}
+\pagebreak
\FR{Opamp} illustrates the macro
{\tt opamp({\sl\linespec, - label, + label, size, chars})\label{OPAMP}}.
-\begin{figure}[b!t]
- \ifpdf\vspace*{-0.5\baselineskip}\fi%
- \input Opamp
+\begin{figure}[h!t]
+% \ifpdf\vspace*{-0.5\baselineskip}\fi%
+ \input OpampMan
\caption{Operational amplifiers. The {\tt P} option adds
power connections. The second and third arguments can be used
to place and rotate arbitrary text at {\tt In1} and {\tt In2}.}
@@ -1415,7 +1421,7 @@ The code in \FR{oax} places an opamp with three connections.
\begin{figure}[h!t]
\parbox{4in}{\small \verbatiminput{oaxbody.m4}}%
\quad\raise-0.2in\hbox{\input oax }%
- \vspace{-\baselineskip}
+% \vspace{-\baselineskip}
\caption{A code fragment invoking the
{\tt opamp(\linespec,-,+,{\sl size},[R][P])} macro.}
\label{oax}
@@ -1437,9 +1443,9 @@ and if it contains a {\tt W}, wide windings are drawn.
A {\tt D1} puts phase dots at the {\sl P1, S1} end, {\tt D2} at the
{\sl P2, S2} ends, and {\tt D12} or {\tt D21} puts dots at opposite ends.
\begin{figure}[h!t]
- \ifpdf\vspace*{-\baselineskip}\fi%
- \input Xform
- \vspace{-\baselineskip}
+% \ifpdf\vspace*{-\baselineskip}\fi%
+ \input XformMan
+% \vspace{-\baselineskip}
\caption{The {\tt transformer(\linespec,L|R,{\sl np},%
[A|P][W|L][D1|D2|D12|D21],{\sl ns})}
macro (drawing direction {\tt down}), showing predefined terminal
@@ -1447,13 +1453,13 @@ A {\tt D1} puts phase dots at the {\sl P1, S1} end, {\tt D2} at the
\label{Xform}
\end{figure}
-%\enlargethispage{\baselineskip}
+\pagebreak
\FR{Audio} shows some audio devices, defined in {\tt []} blocks,
with predefined internal locations as shown.
\begin{figure}[h!t]
- \ifpdf\vspace*{-\baselineskip}\fi%
- \input Audio
- \ifpdf\vspace*{-\baselineskip}\fi%
+% \ifpdf\vspace*{-\baselineskip}\fi%
+ \input AudioMan
+% \ifpdf\vspace*{-\baselineskip}\fi%
\caption{Audio components:
{\tt speaker(U|D|L|R|{\sl degrees},{\sl size},{\sl type}),
bell, microphone, buzzer,
@@ -1474,9 +1480,9 @@ The {\tt nport({\sl box specs {\tt[;} other commands{\tt]},
nw, nn, ne, ns, space ratio, pin lgth, style})}
macro is shown in \FR{Nport}.
\begin{figure}[h!t]
- \ifpdf\vspace*{-\baselineskip}\fi
- \input Nport
- \ifpdf\vspace*{-\baselineskip}\fi
+% \ifpdf\vspace*{-\baselineskip}\fi
+ \input NportMan
+% \ifpdf\vspace*{-\baselineskip}\fi
\caption{The {\tt nport} macro draws a sequence of pairs of named pins
on each side of a box. The pin names are shown. The default is a twoport.
The {\tt nterm} macro draws single pins instead of pin pairs.}
@@ -1514,6 +1520,7 @@ immediately after drawing it but within the enclosing block:
If this trick were to be used extensively, then the following custom wrapper
would save typing, add the labels, and pass all arguments to
{\tt nport}:
+\pagebreak
\begin{verbatim}
define(`nullor',`nport(`$1'
@@ -1523,9 +1530,9 @@ define(`nullor',`nport(`$1'
The above example and the related gyrator macro are illustrated in
\FR{NLG}.
- \ifpdf\vspace*{\baselineskip}\fi%
+% \ifpdf\vspace*{\baselineskip}\fi%
\begin{figure}[h!t]
- \input NLG
+ \input NLGMan
\caption{The {\tt nullor} example and the {\tt gyrator}
macro are customizations of the {\tt nport} macro.}
\label{NLG}
@@ -1535,9 +1542,9 @@ The double-throw switches shown in \FR{NPDT} are drawn in the
current drawing direction like the two-terminal elements, but are
composite elements that must be placed accordingly.
\begin{figure}[h!t]
- \ifpdf\vspace*{-0.5\baselineskip}\fi%
- \input NPDT
- \ifpdf\vspace*{-0.5\baselineskip}\fi%
+% \ifpdf\vspace*{-0.5\baselineskip}\fi%
+ \input NPDTMan
+% \ifpdf\vspace*{-0.5\baselineskip}\fi%
\caption{Multipole double-throw switches drawn by
{\tt NPDT({\sl npoles}, [R])}.}
\label{NPDT}
@@ -1549,8 +1556,8 @@ for the armature and normally closed and normally
open terminals.
An {\tt I} in the first argument draws open circles for contacts.
\begin{figure}[h!t]
- \ifpdf\vspace*{-\baselineskip}\else\vspace*{-0.5\baselineskip}\fi%
- \input Contact
+% \ifpdf\vspace*{-\baselineskip}\else\vspace*{-0.5\baselineskip}\fi%
+ \input ContactMan
\vspace{-1ex}
\caption{The {\tt contact({\sl chars})}
macro (default drawing direction right)
@@ -1558,11 +1565,12 @@ An {\tt I} in the first argument draws open circles for contacts.
\label{Contact}
\end{figure}
+\pagebreak
The {\tt contacts({\sl poles, chars})} macro in \FR{Contacts}
draws multiple contacts.
\begin{figure}[h!t]
- \ifpdf\vspace*{-\baselineskip}\else\vspace*{-0.5\baselineskip}\fi%
- \input Contacts
+% \ifpdf\vspace*{-\baselineskip}\else\vspace*{-0.5\baselineskip}\fi%
+ \input ContactsMan
\vspace{-1ex}
\caption{The {\tt contacts({\sl poles, chars})}
macro (drawing direction right).}
@@ -1574,8 +1582,8 @@ For drawing relays, the macro
shown in \FR{relaycoil} provides a choice of connection points and
actuator types.
\begin{figure}[h!t]
- \ifpdf\vspace*{-\baselineskip}\else\vspace*{-0.5\baselineskip}\fi%
- \input relaycoil
+% \ifpdf\vspace*{-\baselineskip}\else\vspace*{-0.5\baselineskip}\fi%
+ \input relaycoilMan
\vspace{-1ex}
\caption{The {\tt relaycoil} macro.}
\label{relaycoil}
@@ -1585,8 +1593,8 @@ The {\tt relay({\sl poles, chars})} macro in \FR{Relay}
defines coil terminals {\sl V1, V2} and contact
terminals {\sl P$_i$, C$_i$, O$_i$.}
\begin{figure}[h!t]
- \ifpdf\vspace*{-\baselineskip}\else\vspace*{-0.5\baselineskip}\fi%
- \input Relay
+% \ifpdf\vspace*{-\baselineskip}\else\vspace*{-0.5\baselineskip}\fi%
+ \input RelayMan
\vspace{-1ex}
\caption{The {\tt relay({\sl poles, chars})}
macro (drawing direction right).}
@@ -1597,7 +1605,7 @@ The {\tt jack} and {\tt plug} macros and their defined points are
illustrated in \FR{Jack}.
The first argument of both macros establishes the drawing direction.
\begin{figure}[h!t]
- \input Jack
+ \input JackMan
\vspace{-1ex}
\caption{The {\tt jack(U|D|L|R|{\sl degrees}, {\sl chars})}
and {\tt plug(U|D|L|R|{\sl degrees},[2|3][R])} components
@@ -1616,48 +1624,31 @@ The {\tt jack} and {\tt plug} macros and their defined points are
or {\tt S[M|B]} substrings add auxiliary contacts with
specified make or break points.
-A basic winding macro for magnetic-circuit sketches and similar figures
-is shown in \FR{Windings}.
-For simplicity, the complete spline
-is first drawn and then blanked in appropriate places using the background
-(core) color (\verb!lightgray! for example, default \verb!white!).
-\begin{figure}[h!t]
- \vspace*{-\baselineskip}%
-% \ifpdf\vspace*{-2\baselineskip}\else \vspace{-\baselineskip}\fi
- \input Windings
- \ifpdf\vspace*{-\baselineskip}\else\vspace*{-1ex}\fi
- \caption{The {\tt winding(L|R, diam, pitch, turns, core wid, core color)}
- macro draws a coil with axis along the current drawing direction.
- Terminals {\tt T1} and {\tt T2} are defined.
- Setting the first argument to {\tt R} draws a right-hand winding.}
- \label{Windings}
- \end{figure}
-
A macro for drawing headers is in \FR{Headers},
and some experimental connectors are shown in \FR{Conn} and \FR{Pconn}.
The {\tt tstrip} macro allows ``{\sl key}{\tt =}{\sl value}{\tt ;}'' arguments
+for width and height.
\begin{figure}[h!t]
- \ifpdf\vspace*{-0.5\baselineskip}\fi%
- \input Headers
- \ifpdf{\vspace*{-0.5ex}}\fi%
+% \ifpdf\vspace*{-0.5\baselineskip}\fi%
+ \input HeadersMan
+% \ifpdf{\vspace*{-0.5ex}}\fi%
\caption{Macro {\tt Header(1|2, {\sl rows, wid, ht, type})}.}
\label{Headers}
\end{figure}
-for width and height.
\begin{figure}[h!t]
- \input Conn
- \ifpdf{\vspace*{-0.5ex}}\fi%
+ \input ConnMan
+% \ifpdf{\vspace*{-0.5ex}}\fi%
\caption{Macros {\tt tstrip(R|L|U|D|{\sl degrees}, {\sl chars})},
{\tt ccoax(at} {\sl location}, {\tt M|F, {\sl diameter})},
{\tt tconn(\linespec, >|>>|<|<<|O[F], {\sl wid})}, and
{\tt tbox({\sl text, wid, ht}, <|>|<>,{\sl type})}. }
\label{Conn}
- \ifpdf{\vspace*{-1ex}}\fi%
+% \ifpdf{\vspace*{-1ex}}\fi%
\end{figure}
\begin{figure}[h!t]
- \ifpdf{\vspace*{-1ex}}\fi%
- \input Pconn
- \ifpdf{\vspace*{-0.5ex}}\fi%
+% \ifpdf{\vspace*{-1ex}}\fi%
+ \input PconnMan
+% \ifpdf{\vspace*{-0.5ex}}\fi%
\caption{A small set of power connectors drawn by
{\tt pconnex(R|L|U|D|}{\sl degrees, chars}{\tt)}. Each connector has
an internal {\tt H}, {\tt N}, and where applicable, a {\tt G} shape.}
@@ -1665,6 +1656,23 @@ for width and height.
\end{figure}
\pagebreak
+A basic winding macro for magnetic-circuit sketches and similar figures
+is shown in \FR{Windings}.
+For simplicity, the complete spline
+is first drawn and then blanked in appropriate places using the background
+(core) color (\verb!lightgray! for example, default \verb!white!).
+\begin{figure}[h!t]
+ \vspace*{-\baselineskip}%
+% \ifpdf\vspace*{-2\baselineskip}\else \vspace{-\baselineskip}\fi
+ \input WindingsMan
+% \ifpdf\vspace*{-\baselineskip}\else\vspace*{-1ex}\fi
+ \caption{The {\tt winding(L|R, diam, pitch, turns, core wid, core color)}
+ macro draws a coil with axis along the current drawing direction.
+ Terminals {\tt T1} and {\tt T2} are defined.
+ Setting the first argument to {\tt R} draws a right-hand winding.}
+ \label{Windings}
+ \end{figure}
+
\subsection{Semiconductors\label{Semiconductors:}}%
\FR{Bip} shows the variants of bipolar transistor macro
{\tt bi\_tr(\linespec,L|R,P,E)}
@@ -1672,9 +1680,9 @@ which contains predefined internal locations {\sl E},
{\sl B}, {\sl C}.
The first argument defines the distance and direction from {\sl E}
\begin{figure}[h!t]
- \ifpdf\vspace*{-0.5\baselineskip}\fi%
- \input Bip
- \ifpdf\vspace*{-0.5\baselineskip}\fi%
+% \ifpdf\vspace*{-0.5\baselineskip}\fi%
+ \input BipMan
+% \ifpdf\vspace*{-0.5\baselineskip}\fi%
\caption{Variants of bipolar transistor {\tt bi\_tr(\linespec,L|R,P,E)}
(current direction upward).}
\label{Bip}
@@ -1727,15 +1735,15 @@ and a thyristor macro with predefined internal locations
{\sl A,} {\sl K} is in \FR{thyristor}.
Except for the {\sl G} terminal, a thyristor (the {\tt IEC} variant excluded)
\begin{figure}[h!t]
- \ifpdf\vspace*{-\baselineskip}\else\vspace*{-0.5\baselineskip}\fi%
- \input ujt
- \ifpdf\vspace*{-0.5\baselineskip}\fi%
+% \ifpdf\vspace*{-\baselineskip}\else\vspace*{-0.5\baselineskip}\fi%
+ \input ujtMan
+% \ifpdf\vspace*{-0.5\baselineskip}\fi%
\caption{UJT devices, with current drawing direction {\tt up\_}. }
\label{ujt}
\end{figure}
\begin{figure}[h!t]
- \ifpdf\vspace*{-\baselineskip}\else\vspace*{-0.5\baselineskip}\fi%
- \input thyristor
+% \ifpdf\vspace*{-\baselineskip}\else\vspace*{-0.5\baselineskip}\fi%
+ \input thyristorMan
\vspace*{-1ex}
\caption{The top two rows illustrate use of the
{\tt thyristor({\sl linespec, chars})} macro,
@@ -1761,9 +1769,9 @@ Some FETs with predefined internal locations {\sl S,} {\sl D,} and {\sl G} are
also included, with similar arguments to those of {\tt bi\_tr,} as shown in
\FR{fet}.
\begin{figure}[h!t]
- \ifpdf\vspace*{-\baselineskip}\fi%
- \input fet
- \ifpdf\vspace*{-\baselineskip}\fi%
+% \ifpdf\vspace*{-\baselineskip}\fi%
+ \input fetMan
+% \ifpdf\vspace*{-\baselineskip}\fi%
\caption{JFET, insulated-gate enhancement and depletion MOSFETs,
and simplified versions.
These macros are wrappers that invoke the {\tt mosfet}
@@ -1791,7 +1799,6 @@ temporarily for compatibility.
This system allows considerable freedom in choosing or customizing components,
as illustrated in \FR{fet}.
-%\pagebreak
The number of possible semiconductor symbols is very
large, so these macros must be regarded as prototypes.
Often an element is a minor modification of existing elements. For example,
@@ -1800,8 +1807,8 @@ the {\tt thyristor(\linespec, {\sl chars})} macro illustrated in
Another example is the {\tt tgate} macro shown in \FR{Tgate}, which
also shows a pass transistor.
\begin{figure}[h!t]
- \ifpdf\vspace*{-\baselineskip}\fi%
- \input Tgate
+% \ifpdf\vspace*{-\baselineskip}\fi%
+ \input TgateMan
\caption{The {\tt tgate({\sl linespec,} [B][R|L])} element, derived from
a customized diode and {\tt ebox}, and the
{\tt ptrans(\linespec, [R|L])} macro.
@@ -1811,14 +1818,15 @@ also shows a pass transistor.
\label{Tgate}
\end{figure}
+\pagebreak
Some other non-two-terminal macros are {\tt dot}, which has an
optional argument ``{\tt at} {\sl location}'', the line-thickness
macros, the {\tt fill\_} macro, and {\tt crossover}, which is a useful if
archaic method to show non-touching conductor crossovers, as in
\FR{bistable}.
\begin{figure}[h!t]
- \input bistable
- \vspace{-1ex}
+ \input bistableMan
+% \vspace{-1ex}
\caption{Bipolar transistor circuit, illustrating {\tt crossover}
and colored elements.}
\label{bistable}
@@ -1826,13 +1834,12 @@ archaic method to show non-touching conductor crossovers, as in
This figure also illustrates how elements and labels can be colored
using the macro
-
+\par
{\tt rgbdraw({\sl r}, {\sl g}, {\sl b}, {\sl drawing commands})}
-
+\par
\noindent
where the {\sl r, g, b} values are in the range 0 to 1
-(integers from 0 to 255 for \SVG)
- to specify the rgb color.
+(integers from 0 to 255 for \SVG) to specify the rgb color.
This macro is a wrapper for the following, which may be more convenient
if many elements are to be given the same color:
@@ -1917,7 +1924,7 @@ which have one input {\tt In1} unless they are given a
first argument, which is treated as the line specification of a
two-terminal element.
\begin{figure}[h!]
- \input Logic
+ \input LogicMan
\caption{Basic logic gates. The input and output locations of
a three-input NOR gate are shown. Inputs are negated by
including an {\tt N} in the second argument letter sequence. A {\tt B}
@@ -1977,27 +1984,6 @@ If the fifth argument begins with {\tt sprintf} or a double quote then
the argument is copied literally; otherwise it is treated as scriptsize
mathematics.
-The macro {\tt BUFFER\_gate(\linespec,[N|B],{\sl wid},{\sl ht},%
- [N|P]\char42,[N|P]\char42)}
-is a wrapper for the composite element {\tt BUFFER\_gen}.
-If the second argument is {\tt B}, then a box gate is drawn; otherwise
-the gate is triangular. Arguments 5 and 6 determine the number of defined
-points along the northeast and southeast edges respectively, with an {\tt N}
-adding a NOT circle.
-If the first argument is non-blank however, then the buffer is drawn along
-an invisible line like a two-terminal element, which is convenient sometimes
-but requires internal locations of the block to be referenced using
-{\tt last []}, as shown in \FR{Buffer}.
-\begin{figure}[h!t]
- \input Buffer
- \caption{The {\tt BUFFER\_gate} and {\tt BUFFER\_gen} macros.
- The bottom two examples show how the gate can be drawn as a two-terminal
- macro but internal block locations must be referenced using
- {\tt last []}.}
- \label{Buffer}
- \end{figure}
-
-%\pagebreak
A good strategy for drawing complex logic circuits might be summarized
as follows:
\begin{itemize}\itemsep=0pt
@@ -2021,17 +2007,37 @@ as follows:
\end{itemize}
\end{itemize}
+The macro {\tt BUFFER\_gate(\linespec,[N|B],{\sl wid},{\sl ht},%
+ [N|P]\char42,[N|P]\char42)}
+is a wrapper for the composite element {\tt BUFFER\_gen}.
+If the second argument is {\tt B}, then a box gate is drawn; otherwise
+the gate is triangular. Arguments 5 and 6 determine the number of defined
+points along the northeast and southeast edges respectively, with an {\tt N}
+adding a NOT circle.
+If the first argument is non-blank however, then the buffer is drawn along
+an invisible line like a two-terminal element, which is convenient sometimes
+but requires internal locations of the block to be referenced using
+{\tt last []}, as shown in \FR{Buffer}.
+\begin{figure}[h!t]
+ \input Buffer
+ \caption{The {\tt BUFFER\_gate} and {\tt BUFFER\_gen} macros.
+ The bottom two examples show how the gate can be drawn as a two-terminal
+ macro but internal block locations must be referenced using
+ {\tt last []}.}
+ \label{Buffer}
+ \end{figure}
+
\FR{Multiplexer} shows a multiplexer block with variations, and
\FR{Demultiplexer} shows
the very similar demultiplexer.
\begin{figure}[h!t]
- \input Multiplexer
+ \input MultiplexerMan
\caption{The {\tt Mux({\sl input count}, {\sl label},
[L][B|H|X][N[$n$]|S[$n$]][[N]OE],{\sl wid},{\sl ht})} macro.}
\label{Multiplexer}
\end{figure}
\begin{figure}[h!t]
- \input Demultiplexer
+ \input DemultiplexerMan
\caption{The {\tt Demux({\sl input count}, {\sl label},
[L][B|H|X][N[$n$]|S[$n$]][[N]OE],{\sl wid},{\sl ht})} macro.}
\label{Demultiplexer}
@@ -2047,7 +2053,7 @@ leftpins, toppins, rightpins, bottompins, pinlength}{\tt )}.
\caption{The {\tt FlipFlop} and {\tt FlipFlopX} macros, with variations.}
\label{FlipFlops}
\end{figure}
-The first argument modifies the box (labelled Chip) default specification.
+The first argument modifies the box (labelled {\sl Chip}) default specification.
Each of arguments 3 to 6 is null or a string of {\sl pinspecs} separated
by semicolons ({\tt;}).
A {\sl pinspec} is either empty (null) or of the form
@@ -2062,13 +2068,12 @@ base. Semicolons are
not allowed in labels; use e.g., \verb|\char59{}| instead. To put a bar over
a label, use {\tt lg\_bartxt(}{\sl label}{\tt)}.
The {\sl pinopts} are {\tt [L|M|I|O][N][E]} as for the \verb|lg_pin| macro.
-Option argument 7 is the pin length in drawing units.
+Optional argument 7 is the pin length in drawing units.
-\pagebreak
Customized gates can be defined simply.
For example, the following code defines the custom flipflops in \FR{ShiftR}.
\begin{figure}[h!t]
- \input ShiftR
+ \input ShiftRMan
\caption{A 5-bit shift register.}
\label{ShiftR}
\end{figure}
@@ -2077,7 +2082,7 @@ define(`customFF',`FlipFlopX(wid 10*L_unit ht FF_ht*L_unit,,
:S;NE:CK;:R, N:PR, :Q;;ifelse(`$1',1,:lg_bartxt(Q)), N:CLR) ')
\end{verbatim}
This definition makes use of macros \verb|L_unit| and
-\verb|FF_ht| that predefine dimensions.
+\verb|FF_ht| that predefine default dimensions.
There are three pins on the right side; the centre pin is null and
the bottom is null if the first macro argument is 1.
@@ -2088,7 +2093,7 @@ of which can be specified as macro arguments.
\begin{figure}[h!t]
% \ifpdf\vspace*{-\baselineskip}\fi%
\input Dac
- \ifpdf\vspace*{-\baselineskip}\fi%
+% \ifpdf\vspace*{-\baselineskip}\fi%
\caption{The {\tt dac({\sl width,height},nIn,nN,nOut,nS)}
and {\tt adc({\sl width,height},nIn,nN,nOut,nS)} macros.}
\label{Dac}
@@ -2097,6 +2102,52 @@ of which can be specified as macro arguments.
In addition to the logic gates described here, some experimental
IC chip diagrams are included with the distributed example files.
+\xection{Integrated circuits\label{ICs:}}
+Developing a definitive library of integrated circuits is problematic
+because context may determine how they should be drawn. Logical clarity
+may require drawing a functional diagram in which the connection pins are
+not in the physical order of a terminal diagram, for example. Circuit
+boards and connectors are similar. Although the geometries are simple,
+managing lists of pin locations and labels can be tedious and repetitive.
+
+The many-argument macro
+ {\tt lg\_pin( {\sl location, label, Picname,} n|e|s|w [L|M|I|O][N][E],
+ {\sl pinno, optional length})}
+can be used to draw a variety of pins as illustrated in the \FR{sampleIC}.
+To draw the left-side pins, for example, one can write
+\begin{verbatim}
+ lg_pin( U.nw-(0,lg_pinsep), Vin, Pin1, w )
+ lg_pin( U.nw-(0,2*lg_pinsep),,, wL )
+\end{verbatim}
+\noindent
+and so on.
+\begin{figure}[h!]
+ \parbox{\textwidth}{\small\verbatiminput{sampleIC.m4}}%
+ \hfill\llap{\raise-0.15in\hbox{\input sampleIC }}%
+ \vspace*{-\baselineskip}%
+ \caption{ An imaginary 16-pin integrated circuit and its code.
+ Pin variations defined by the first {\tt Loopover\_}
+ are shown on the left; and text, pic labels, and pin
+ numbers are defined on the right.
+ The third and successive arguments of the second
+ {\tt Loopover\_}
+ are {\tt ;}-separated pin number, text, and pin type. The
+ semicolons are changed to commas by the {\tt patsubst} \Mfour\ macro
+ and the {\tt Upin} macro gives the resulting arguments to {\tt lg\_pin}.
+\label{sampleIC}}%
+ \end{figure}
+Each pin can also be given a \pic\ name, some text
+to indicate function, and a number.
+
+To reduce the tedium of adding the pins by hand, a list
+can be given to the
+{\tt Loopover\_(\char96{}variable\char39,
+\char96{}{\sl actions}\char39,
+{\sl value1, value2, $\ldots$})}
+which executes the given actions successively with
+ {\sl variable} = {\sl value1}, {\sl value2} $ldots$ and the
+ counter {\tt m4Lx} set to 1, 2, $\ldots$ as in the diagram.
+
\xection{Element and diagram scaling\label{Scaling:}}
There are several issues related to scale changes. You may wish to use
@@ -2217,6 +2268,7 @@ If you develop a library of custom macros in the installation
directory then the statement {\tt include(}{\sl mylibrary}{\tt.m4)}
can bring its definitions into play.
+\enlargethispage{\baselineskip}
It may not be necessary to define your own macro if all that is needed is
a small addition to an existing element that is defined in an enclosing
\verb|[ ]| block. After the element arguments are expanded,
@@ -2235,10 +2287,6 @@ to defer macro expansion. Macro arguments are referenced inside a
macro by number; thus {\tt \$1} refers to the first argument.
A few examples will be given.
-\pagebreak
-%\enlargethispage{\baselineskip}
-%\noindent\hbox{}\\ {\bf Example 1:}
-%\par\noindent {\bf Example 1:}
\Example{1}
Custom two-terminal elements can often be defined by writing a wrapper
for an existing element. For example, an enclosed thermal switch
@@ -2253,7 +2301,6 @@ can be defined as shown in \FR{Thermal}.
\label{Thermal}
\end{figure}
-%\par\noindent {\bf Example 2:}
\Example{2}
In the following,
two macros are defined to simplify the repeated drawing
@@ -2261,27 +2308,19 @@ of a series resistor and series inductor, and the macro {\tt tsection} defines
a subcircuit that is replicated several times to generate \FR{Tline}.
{\small \verbatiminput{Tline.m4}}
\begin{figure}[h!]
- \ifpdf\vspace*{-\baselineskip}\fi%
+% \ifpdf\vspace*{-\baselineskip}\fi%
\input Tline
\caption{A lumped model of a transmission line, illustrating the
use of custom macros.}
\label{Tline}
\end{figure}
-\pagebreak
\Example{3}
%\par\noindent {\bf Example 3:}
Composite elements containing several basic elements may be
required. \FR{HybridPi} shows a circuit that can be drawn in
any reference direction prespecified by {\tt Point\_({\sl degrees})},
containing labels that always appear in their natural horizontal orientation.
-\begin{figure}[h!t]
- \vspace*{-0.5ex}
- \input HybridPi
- \vspace*{-0.5ex}
- \caption{A composite element containing several basic elements}
- \label{HybridPi}
- \end{figure}
Two flags in the argument determine the circuit orientation with respect to
the current drawing direction and whether a mirrored circuit is drawn.
The key to writing such a macro is to observe that the \pic language
@@ -2321,10 +2360,15 @@ define(`hybrid_PI_BJT',
`"$\mathrm{r_o}$"' at Ro.c+vec_(hunit/4,0)
`$2' ] ')
\end{verbatim}
+\begin{figure}[h!t]
+ \vspace*{-0.5ex}
+ \input HybridPi
+ \vspace*{-0.5ex}
+ \caption{A composite element containing several basic elements}
+ \label{HybridPi}
+ \end{figure}
-\pagebreak
\Example{4}
-%\par\noindent {\bf Example 4:}
A number of elements have arguments meant explicitly for customization.
\FR{Sinus} customizes the {\tt source} macro to show a cycle of a horizontal
sinusoid with adjustable phase given by argument 2 in degrees,
@@ -2347,9 +2391,7 @@ $3,$4,$5)')
\end{figure}
\Example{5}
-%\par\noindent {\bf Example 5:}
Repeated subcircuits might have different orientations
-% but the potential orientations often
that
include only the element and its mirror image, for example, so the
power of the \verb|vec_()| and \verb|rvec_()| macros is not required.
@@ -2363,7 +2405,7 @@ orientation as shown in \FR{Opto}.
\end{figure}
The macro interface could be something like the following:
-
+\par
{\tt opto( [L|R][A|B] )},
\noindent where an {\tt R} in the argument string signifies a right-left
@@ -2372,7 +2414,7 @@ that is, there are two related elements that might be drawn in either
orientation, for a total of four possibilities.
Those who find such an interface to be too cryptic might prefer to
invoke the macro as
-
+\par
{\tt opto(orientation=Rightleft;type=B)},
\noindent
@@ -2588,9 +2630,11 @@ define(`Q\_d',0.0pt\_\_)dnl}
These definitions are required by the \verb|boxdim| macro
described below.
+\vbox{\strut
The \latex macro
-
+\par
\verb|\boxdimfile{|{\sl dimension file}\verb|}|
+}
\noindent is used to specify an alternative to {\sl jobname.}\verb|dim| as the
dimension file to be written. This simplifies cases where {\sl jobname}
@@ -2661,6 +2705,12 @@ libgen.m4}, to convert points to drawing coordinates.
Sometimes a label needs a plain background in order to blank
out previously drawn components overlapped by the label,
as shown on the left of \FR{fbox}.
+\begin{figure}[h!b]
+ \input woodchips
+ \vspace{-0.5\baselineskip}
+ \caption{Illustrating the {\tt f\_box} macro.}
+ \label{fbox}
+ \end{figure}
The technique illustrated in \FR{boxdims} is automated by the
macro
{\tt f\_box(}{\sl boxspecs}, {\sl label arguments}{\tt )}.
@@ -2675,15 +2725,8 @@ Otherwise, the first argument specifies the box characteristics
\noindent%
For example, the result of the following command
is shown on the right of \FR{fbox}.
-
+\par
\verb|f_box(color "lightgray" thickness 2 rad 2pt__,"\huge$n^{%g}$",4-1)|
-\begin{figure}[h!b]
-%\begin{figure}[b!]
- \input woodchips
- \vspace{-0.5\baselineskip}
- \caption{Illustrating the {\tt f\_box} macro.}
- \label{fbox}
- \end{figure}
More tricks can be played. The example
@@ -2699,6 +2742,7 @@ with {\tt boxcoord(}{\sl object name}{\tt,0,0)} at the lower left
corner of the object, and {\tt boxcoord(}{\sl object name}{\tt,1,1)} at
its upper right.
+\pagebreak
\xection{\PSTricks and other tricks\label{Pstricks:}}
This section applies only to a \pic processor (\dpic) that is
capable of producing output compatible with
@@ -2833,23 +2877,26 @@ to the desired output, whereas \dpic can generate several alternative
formats, as shown in \FR{Workflow}.
One of the easiest methods
for producing web documents is to generate postscript as usual and to
-convert the result to pdf format with Adobe
-Distiller
-%\Textregistered
-or equivalent.
+convert the result to pdf format with Adobe Distiller or equivalent.
+\begin{figure}[h!b]
+% \ifpdf\vspace*{-\baselineskip}\fi%
+ \input Workflow
+% \ifpdf\vspace*{-\baselineskip}\fi%
+ \caption{Output formats produced by \gpic {\tt -t} and \dpic.
+ SVG output can be read by Inkscape or used directly in web documents.}
+ \label{Workflow}
+ \end{figure}
PDFlatex produces pdf without first creating a postscript file
but does not handle \tpic \verb|\special|s, so \dpic must be
installed.
-%\enlargethispage{\baselineskip}
Most PDFLatex distributions are not directly compatible with \PSTricks, but
the \TPGF output of \dpic is compatible with both \latex and PDFLatex.
Several alternative \dpic output formats such as
\mfpic and \MetaPost also work well.
To test \MetaPost, create a file {\sl filename}{\tt .mp}
containing appropriate header lines, for example:
-%\pagebreak
\begin{verbatim}
verbatimtex
\documentclass[11pt]{article}
@@ -2890,14 +2937,6 @@ The \dpic processor is capable of other output formats, as illustrated in
\FR{Workflow} and in example files included with the distribution.
The \latex drawing commands alone or with {\tt eepic} or {\tt pict2e}
extensions are suitable only for simple diagrams.
-\begin{figure}[h!b]
-% \ifpdf\vspace*{-\baselineskip}\fi%
- \input Workflow
- \ifpdf\vspace*{-\baselineskip}\fi%
- \caption{Output formats produced by \gpic {\tt -t} and \dpic.
- SVG output can be read by Inkscape or used directly in web documents.}
- \label{Workflow}
- \end{figure}
\xection{Developer's notes\label{Developersnotes:}}
Years ago in the course of writing a book, I took a few days off to