From 527001b634c06d34f92d1809f507add012c320f6 Mon Sep 17 00:00:00 2001
From: Norbert Preining <norbert@preining.info>
Date: Thu, 14 Sep 2023 03:01:37 +0000
Subject: CTAN sync 202309140301

---
 graphics/circuit_macros/doc/defines.tex | 800 +++++++++++++++++---------------
 1 file changed, 433 insertions(+), 367 deletions(-)

(limited to 'graphics/circuit_macros/doc/defines.tex')

diff --git a/graphics/circuit_macros/doc/defines.tex b/graphics/circuit_macros/doc/defines.tex
index cf87a5b02f..7f3ceea1b3 100644
--- a/graphics/circuit_macros/doc/defines.tex
+++ b/graphics/circuit_macros/doc/defines.tex
@@ -187,14 +187,14 @@
   {cct}
   {line (dotted, dashed permissible) with centred arrowhead
     \seesect{Twoterminal:}}
+\macrodef{assign3}{assign3}{({\sl var name,var name,var name,arg4,arg5,arg6})}
+  {gen}
+  {Assigns \$1 = arg4 if \$1 is nonblank; similarly \$2 = arg5 and \$3 = arg6}
 \macrodef{AutoGate}{AutoGate}{}
   {log}
   {Draw the tree for a gate as in the {\tt Autologix} macro.  No inputs
    or external connections are drawn.  The names of the internal gate
    inputs are stacked in {\tt `AutoInNames'}}
-\macrodef{assign3}{assign3}{({\sl var name,var name,var name,arg4,arg5,arg6})}
-  {gen}
-  {Assigns \$1 = arg4 if \$1 is nonblank; similarly \$2 = arg5 and \$3 = arg6}
 \macrodef{Autologix}{Autologix}%
  {({\sl Boolean function sequence},%
     [N[oconnect]][L[eftinputs]][R][V][M][;offset={\sl value}])}
@@ -239,14 +239,6 @@
    {\tt Autologix(Xor([PN],And(x,y),And(x,y)),LRV)}}
 
 \Letter{B}%
-\macrodef{b\_}{b_}{}
-  {gen}
-  {blue color value}
-\macrodef{b\_current}{b_current}{({\sl label},{\sl pos},In|Out,Start|End,{\sl
-    frac})}
-  {cct}
-  {labelled branch-current arrow to {\sl frac} between branch end and body
-    \seesect{Branchcurrent:}}
 \macrodef{basename\_}{basename_}{({\sl string sequence, separator})}
   {gen}
   {Extract the rightmost name from a sequence of names separated by arg2
@@ -255,6 +247,14 @@
   {cct}
   {n-cell battery: default 1 cell,
   R=reversed polarity\seesect{Twoterminal:}}
+\macrodef{b\_}{b_}{}
+  {gen}
+  {blue color value}
+\macrodef{b\_current}{b_current}{({\sl label},{\sl pos},In|Out,Start|End,{\sl
+    frac})}
+  {cct}
+  {labelled branch-current arrow to {\sl frac} between branch end and body
+    \seesect{Branchcurrent:}}
 \macrodef{beginshade}{beginshade}{({\sl gray value})}
   {gen}
   {begin gray shading, see {\tt shade}
@@ -270,10 +270,10 @@
   {gen}
   {Position {\sl distance} from {\sl Pos1} toward {\sl Pos2}.  If
    the fourth arg is {\tt R} then from {\sl Pos2} toward {\sl Pos1}.}
-\macrodef{bi\_tr}{bi_tr}{(\linespec,L|R,P,E)}
-  {cct}
-  {left or right, N- or P-type bipolar transistor, without or with envelope 
-    \seesect{Semiconductors:}}
+\macrodef{binary\_}{binary_}{($n$, [$m$])}
+  {gen}
+  {binary representation of $n,$ left padded to $m$ digits if the second
+   argument is nonblank}
 \macrodef{bi\_trans}{bi_trans}{(\linespec,L|R,{\sl chars},E)}
   {cct}
   { bipolar transistor, core left or right; chars:
@@ -291,15 +291,10 @@
    {\tt [u]T}=thyristor trigger line;
    arg 4 = E: envelope
     \seesect{Semiconductors:}}
-\macrodef{binary\_}{binary_}{($n$, [$m$])}
-  {gen}
-  {binary representation of $n,$ left padded to $m$ digits if the second
-   argument is nonblank}
-\macrodef{BOX\_gate}{BOX_gate}{({\sl inputs,output,swid,sht,label})}
-  {log}
-  {output=[{\tt P|N}], inputs=[{\tt P|N}]$\ldots$, sizes swid and sht
-  in {\tt L\_unit}s (default {\tt AND\_wd} = 7)
-    \seesect{Logicgates:}}
+\macrodef{bi\_tr}{bi_tr}{(\linespec,L|R,P,E)}
+  {cct}
+  {left or right, N- or P-type bipolar transistor, without or with envelope 
+    \seesect{Semiconductors:}}
 \macrodef{boxcoord}{boxcoord}{({\sl planar obj},{\sl x fraction},{\sl y
     fraction})}
   {gen}
@@ -309,6 +304,11 @@
   {evaluate, e.g.\ {\sl name}{\tt \_w} if defined, else {\sl default\/}
    if given, else 0 {\tt v} gives sum of {\tt d} and {\tt h} values
      \seesect{Interaction:}}
+\macrodef{BOX\_gate}{BOX_gate}{({\sl inputs,output,swid,sht,label})}
+  {log}
+  {output=[{\tt P|N}], inputs=[{\tt P|N}]$\ldots$, sizes swid and sht
+  in {\tt L\_unit}s (default {\tt AND\_wd} = 7)
+    \seesect{Logicgates:}}
 \macrodef{bp\_\_}{bp__}{}
   {gen}
   {big-point-size factor, in scaled inches, ({\tt *scale/72})}
@@ -316,12 +316,6 @@
   {cct}
   {pushbutton switch R=right orientation (default L=left);
      chars: O= normally open, C=normally closed }
-\macrodef{BUF\_ht}{BUF_ht}{}
-  {log}
-  {basic buffer gate height in {\tt L\_unit}s}
-\macrodef{BUF\_wd}{BUF_wd}{}
-  {log}
-  {basic buffer gate width in {\tt L\_unit}s}
 \macrodef{BUFFER\_gate}{BUFFER_gate}{(\linespec, [N|B],
   {\sl wid, ht,} [N|P]\char42, [N|P]\char42, [N|P]\char42)}
   {log}
@@ -339,14 +333,17 @@
             Args 4-6 allow alternative
             definitions of respective {\tt In, NE,}
             and {\tt SE} argument sequences }
+\macrodef{BUF\_ht}{BUF_ht}{}
+  {log}
+  {basic buffer gate height in {\tt L\_unit}s}
+\macrodef{BUF\_wd}{BUF_wd}{}
+  {log}
+  {basic buffer gate width in {\tt L\_unit}s}
 \macrodef{buzzer}{buzzer}{( U|D|L|R|{\sl degrees, size,}[C])}
   {cct}
   {buzzer, {\sl In1} to {\sl In3} defined, C=curved
    \seesect{Composite:}}
 \Letter{C}%
-\macrodef{c\_fet}{c_fet}{(\linespec,R,P)}
-  {cct}
-  {left or right, plain or negated pin simplified MOSFET}
 \macrodef{capacitor}{capacitor}{(\linespec,{\sl chars},R,
     {\sl height}, {\sl wid})}
   {cct}
@@ -385,6 +382,9 @@
    minimum long dash len, short dash len, gap len}}
   {gen}
   {Technical drawing centerline}
+\macrodef{c\_fet}{c_fet}{(\linespec,R,P)}
+  {cct}
+  {left or right, plain or negated pin simplified MOSFET}
 \macrodef{Cintersect}{Cintersect}{({\sl Pos1, Pos2, rad1, rad2,} [R])}
   {gen}
   {Upper (lower if arg5={\tt R}) intersection of circles at
@@ -457,14 +457,14 @@
     {\sl phase} )}
   {gen}
   {function $a\times\cos(\omega t + \phi)$ }
+\macrodef{cross3D}{cross3D}{({\sl x1,y1,z1,x2,y2,z2})}
+  {3D}
+  {cross product of two triples}
 \macrodef{cross}{cross}{(at {\sl location, size}|{\sl keys})}
   {gen}
   {Plots a small cross.  The possible key-value pairs are:
     {\tt size={\sl expr};},
     {\tt line={\sl attributes};} }
-\macrodef{cross3D}{cross3D}{({\sl x1,y1,z1,x2,y2,z2})}
-  {3D}
-  {cross product of two triples}
 \macrodef{crossover}{crossover}{(\linespec, [L|R][:{\sl line attributes}],
   Line1, Line2, .{.}.)}
   {cct}
@@ -476,10 +476,6 @@
   {cct}
   {controlled-source width}
 \Letter{D}%
-\macrodef{d\_fet}{d_fet}{(\linespec,R,P,E|S)}
-  {cct}
-  {left or right, N or P depletion MOSFET, envelope or simplified
-    \seesect{Semiconductors:}}
 \macrodef{dabove}{dabove}{(at {\sl location})}
   {darrow}
   {above (displaced dlinewid/2)}
@@ -488,18 +484,6 @@
   {DAC with defined width, height, and number of inputs {\tt In$i$},
     top terminals {\tt N$i$}, ouputs {\tt Out$i$},
     and bottom terminals~{\tt S$i$} \seesect{Logicgates:}}
-\macrodef{darc}{darc}{({\sl center position},
-  {\sl radius}, {\sl start radians}, {\sl end radians}, {\sl dline thickness},
-  {\sl arrowhead wid}, {\sl arrowhead ht},
-  {\sl terminals})}
-  {darrow}
-  {See also {\tt Darc}.
-   CCW arc in {\tt dline} style, with closed ends or (dpic only) arrowheads.
-  Permissible {\sl terminals}:
-  {\sl x}{\tt -},
-  {\tt -}{\sl x}, {\sl x}{\tt -}{\sl x}, {\tt ->}, {\sl x}{\tt ->},
-  {\tt <-}, {\tt <-}{\sl x}, {\tt <->}
-  where {\sl x} means {\tt |} or (half-thickness line) {\tt !}.}
 \macrodef{Darc}{Darc}{({\sl center position},
   {\sl radius}, {\sl start radians}, {\sl end radians},
   {\sl parameters})}
@@ -512,6 +496,20 @@
   {\tt -}{\sl x}, {\sl x}{\tt -}{\sl x}, {\tt ->}, {\sl x}{\tt ->},
   {\tt <-}, {\tt <-}{\sl x}, {\tt <->}
   where {\sl x} means {\tt |} or (half-thickness line) {\tt !}.}
+\macrodef{darc}{darc}{({\sl center position},
+  {\sl radius}, {\sl start radians}, {\sl end radians}, {\sl dline thickness},
+  {\sl arrowhead wid}, {\sl arrowhead ht},
+  {\sl end symbols}, {\sl outline attributes}, {\sl inner attributes})}
+  {darrow}
+  {See also {\tt Darc}.
+   CCW arc in {\tt dline} style, with closed ends or (dpic only) arrowheads.
+  Permissible {\sl end symbols}:
+  {\sl x}{\tt -},
+  {\tt -}{\sl x}, {\sl x}{\tt -}{\sl x}, {\tt ->}, {\sl x}{\tt ->},
+  {\tt <-}, {\tt <-}{\sl x}, {\tt <->}
+  where {\sl x} means {\tt |} or (half-thickness line) {\tt !}.
+  An inner arc is drawn overlaying the outer arc.
+  Example: {\tt darc(,{,},{,},{,},{,}outlined "red",outlined "yellow")}.}
 \macrodef{Darlington}{Darlington}{(L|R,{\sl chars})}
   {cct}
   {Composite Darlington pair Q1 and Q2 with internal locations E, B, C;
@@ -524,33 +522,44 @@
    R2= Q2 bias resistor; E1= ebox,
    Z= zener bias diode 
     \seesect{Semiconductors:}}
-\macrodef{darrow\_init}{darrow_init}{}
+\macrodef{darrow}{darrow}{(\linespec,
+  t,t,{\sl width},{\sl arrowhd wd},{\sl arrowhd ht},{\sl parameters},
+    {\sl color attributes})}
   {darrow}
-  {initialize darrow drawing parameters (reads {\tt darrow.m4})}
+  {See also {\tt Darrow}.
+   Double arrow, truncated at beginning (arg2={\tt t}) or
+    end (arg3={\tt t}), specified sizes,
+    with arrowhead and optional closed stem. The parameters (arg7) are
+    {\tt {\sl x}-} or {\tt ->} or {\tt {\sl x}->} or {\tt <-} or {\tt <-{\sl x}}
+    or {\tt <->} where {\sl x} is {\tt |} or {\tt !}.
+    The {\tt !-} or {\tt -!} parameters close
+    the stem with half-thickness lines to simplify butting to other objects.
+    The color attributes are, e.g.,
+    {\tt outlined "{\sl color}" shaded "{\sl color}"}.
+    Example:
+    {\tt linethick=5; darrow(down\_\ 2,{,},0.5,0.75,0.75,|,outlined "red")}. }
 \macrodef{Darrow}{Darrow}{(\linespec, {\sl parameters})}
   {darrow}
   {Wrapper for {\tt darrow}.
   Semicolon-separated {\sl parameters}:
-    {\tt S}, {\tt E} truncate at start or end by dline thickness/2;
-    {\tt thick=}{\sl val}   (total thicknes, ie width);
-    {\tt wid=}{\sl val}     (arrowhead width);
-    {\tt ht=}{\sl val}      (arrowhead height);
+    {\tt S;}, {\tt E;} truncate at start or end by dline thickness/2;
+    {\tt thick=}{\sl val};   (total thicknes, ie width);
+    {\tt wid=}{\sl val};     (arrowhead width);
+    {\tt ht=}{\sl val};      (arrowhead height);
     {\tt ends=}
       {\sl x}{\tt -}{\sl x} or
       {\tt -}{\sl x} or
       {\sl x}{\tt -} where {\sl x} is {\tt !} (half-width line)
-       or {\tt |} (full-width line).}
-\macrodef{darrow}{darrow}{(\linespec,
-  t,t,{\sl width},{\sl arrowhd wd},{\sl arrowhd ht},{\sl parameters})}
+       or {\tt |} (full-width line).
+    Examples:
+    {\tt define(`dfillcolor',`1,0.85,0') linethick=5;
+     rgbdraw(1,0,0,Darrow(down\_\ 2,thick=0.5; wid=0.75; ht=0.75; ends=|->))},
+     which is equivalent to
+    {\tt Darrow(down\_\ 2,thick=0.5; wid=0.75; ht=0.75; \
+      ends=|->; outline="red")}.  }
+\macrodef{darrow\_init}{darrow_init}{}
   {darrow}
-  {See also {\tt Darrow}.
-   double arrow, truncated at beginning or end, specified sizes,
-    with arrowhead or closed stem.
-    {\sl parameters=}
-    {\tt {\sl x}-} or {\tt ->} or {\tt {\sl x}->} or {\tt <-} or {\tt <-{\sl x}}
-    or {\tt <->} where {\sl x} is {\tt |} or {\tt !}.
-    The {\tt !-} or {\tt -!} parameters close
-    the stem with half-thickness lines to simplify butting to other objects. }
+  {Initialize darrow drawing parameters (reads library file {\tt darrow.m4})}
 \macrodef{dashline}{dashline}{(\linespec,{\sl thickness}|{\sl color}|<->,
                                   {\sl dash len, gap len},G)}
   {gen}
@@ -567,14 +576,14 @@
   {A DC symbol (a dashed line below a solid line).
    The current drawing direction is default, otherwise Up, Down,
    Left, Right, or at {\sl degrees} slant; e.g., 
-   {\tt source(up\_ dimen\_); $\lbrace$ DCsymbol(at last [],,,R) $\rbrace$}
+   {\tt source(up\_ dimen\_); $\lbrace$ DCsymbol(at last [],{},{},R) $\rbrace$}
    \seesect{Twoterminal:} }
-\macrodef{delay\_rad\_}{delay_rad_}{}
-  {cct}
-  {delay radius}
 \macrodef{delay}{delay}{(\linespec,{\sl size})}
   {cct}
   {delay element\seesect{Twoterminal:}}
+\macrodef{delay\_rad\_}{delay_rad_}{}
+  {cct}
+  {delay radius}
 \macrodef{deleminit\_}{deleminit_}{}
   {darrow}
   {sets drawing direction for dlines}
@@ -599,18 +608,26 @@
     {\tt S[{\sl n}]} puts the Sel inputs at the bottom (default)
     {\tt OE} ({\tt N=}negated) {\tt OE} pin
     \seesect{Logicgates:}}
-\macrodef{dend}{dend}{(at {\sl location})}
+\macrodef{dend}{dend}{(at {\sl location},
+  {\sl line thickness}{\tt |}{\sl attributes})}
   {darrow}
-  {close (or start) double line}
+  {Close (or start) double line (Note specifying {\tt dends=} for {\tt Dline}
+   is a similar function.  Arg2 is dline thickness or atributes:
+   {\tt thick={\sl expression};} (dline thickness in drawing units)
+   {\tt outline=({\sl r,g,b})|"{\sl color}";}}
+\macrodef{d\_fet}{d_fet}{(\linespec,R,P,E|S)}
+  {cct}
+  {left or right, N or P depletion MOSFET, envelope or simplified
+    \seesect{Semiconductors:}}
 \macrodef{dfillcolor}{dfillcolor}{}
   {darrow}
   {dline fill color (default white)}
-\macrodef{diff\_}{diff_}{({\sl a},{\sl b})}
-  {gen}
-  {difference function}
 \macrodef{diff3D}{diff3D}{({\sl x1,y1,z1,x2,y2,z2})}
   {3D}
   {difference of two triples}
+\macrodef{diff\_}{diff_}{({\sl a},{\sl b})}
+  {gen}
+  {difference function}
 \macrodef{dimen\_}{dimen_}{}
   {cct}
   {size parameter for scaling circuit element bodies \seesect{Circuitscaling:}}
@@ -671,20 +688,27 @@ B|b|CR|D|G|L|LE[R]|P[R]|S|Sh|T|U|V|v|w|Z|chars,%
       line rather than the centre of the last {\tt [ ]};
     L,R,A,B align labels ljust, rjust, above,
       or below (absolute) respectively  \seesect{Labels:}}
-\macrodef{dleft}{dleft}{}
+\macrodef{dleft}{dleft}{({\tt at} {\sl position}, {\sl line thickness},
+      {\sl attributes})}
   {darrow}
-  {double line left turn}
+  {Double line left turn 90 degrees.  Attributes can be
+    {\tt outline=({\sl r, g, b})|"{\sl color}";}
+    {\tt innershade=({\sl r, g, b})|"{\sl color}";}
+    where rgb values in parentheses or a defined color is specified.}
 \macrodef{Dline}{Dline}{(\linespec, {\sl parameters})}
   {darrow}
   {Wrapper for {\tt dline}.
-  Semicolon-separated {\sl parameters}:
-    {\tt S}, {\tt E} truncate at start or end by dline thickness/2;
-    {\tt thick=}{\sl val}   (total thicknes, ie width);
+  The semicolon-separated {\sl parameters} are:
+    {\tt S;}, {\tt E;} truncate at start or end by dline thickness/2;
+    {\tt thick={\sl val};}   (total thicknes, ie width);
+    {\tt outline={\sl color};} (e.g., {\tt "red"} or {\tt (1,0,0)}),
+    {\tt innershade={\sl color};} (e.g., {\tt (0,1,1)} or {\tt "cyan"}),
+    {\tt name={\sl Name};},
     {\tt ends=}
       {\sl x}{\tt -}{\sl x} or
       {\tt -}{\sl x} or
       {\sl x}{\tt -} where {\sl x} is {\tt !} (half-width line)
-       or {\tt |} (full-width line).}
+       or {\tt |;} (full-width line).}
 \macrodef{dline}{dline}{(\linespec,t,t,{\sl width},{\sl parameters})}
   {darrow}
   {See also {\tt Dline}.
@@ -701,33 +725,37 @@ B|b|CR|D|G|L|LE[R]|P[R]|S|Sh|T|U|V|v|w|Z|chars,%
 \macrodef{dljust}{dljust}{(at {\sl location})}
   {darrow}
   {ljust (displaced dlinewid/2)}
-\macrodef{dn\_}{dnx}{}
-  {gen}
-  {down with respect to current direction}
 \macrodef{dna\_}{dna_}{}
   {cct}
   {internal character sequence that specifies which subcomponents are drawn}
+\macrodef{dn\_}{dnx}{}
+  {gen}
+  {down with respect to current direction}
 %\macrodef{dnm\_}{dnm_}{}
 %  {cct}
 %  {similar to dna\_}
+\macrodef{dot3D}{dot3D}{({\sl x1,y1,z1,x2,y2,z2})}
+  {3D}
+  {dot product of two triples}
 \macrodef{dot}{dot}{(at {\sl location},{\sl radius}|{\sl keys},{\sl fill})}
   {gen}
   {Filled circle (third arg= gray value: 0=black, 1=white). The possible
    key-value pairs are:
     {\tt rad={\sl expr};} and
     {\tt circle={\sl attributes};} }
-\macrodef{dot3D}{dot3D}{({\sl x1,y1,z1,x2,y2,z2})}
-  {3D}
-  {dot product of two triples}
 \macrodef{dotrad\_}{dotrad_}{}
   {gen}
   {dot radius}
 \macrodef{down\_}{down_}{}
   {gen}
   {sets current direction to down \seesect{Placing:}}
-\macrodef{dright}{dright}{}
+\macrodef{dright}{dright}{({\tt at} {\sl position}, {\sl line thickness},
+      {\sl attributes})}
   {darrow}
-  {double arrow right turn}
+  {Double line right turn 90 degrees.  Attributes can be
+    {\tt outline=({\sl r, g, b})|"{\sl color}";}
+    {\tt innershade=({\sl r, g, b})|"{\sl color}";}
+    where rgb values in parentheses or a defined color is specified.}
 \macrodef{drjust}{drjust}{(at {\sl location})}
   {darrow}
   {rjust (displaced dlinewid/2)}
@@ -763,28 +791,30 @@ B|b|CR|D|G|L|LE[R]|P[R]|S|Sh|T|U|V|v|w|Z|chars,%
          Y = pull switch,
          Z = turn switch
    \seesect{Twoterminal:}}
-\macrodef{dtee}{dtee}{([L|R])}
+\macrodef{dtee}{dtee}{([L|R], {\sl line thickness}, {\sl attributes})}
   {darrow}
-  {double arrow tee junction with tail to left,
-   right, or (default) back along current direction }
+  {Double arrow tee junction with tail to left,
+   right, or (default) back along current direction, leaving the current
+   location at the tee centre; e.g.,
+   {\tt dline(right\_,{,}t); dtee(R);
+    \{ darrow(down\_,t) \}; darrow(right\_,t)}.
+   The attributes are
+     {\tt thick={\sl expr};} (line thickness in drawing units),
+     {\tt innershade=({\sl r,g,b})|"{\sl color}";}
+     {\tt outline=({\sl r,g,b})|"{\sl color}";}. }
 \macrodef{dtor\_}{dtor_}{}
   {gen}
   {degrees to radians conversion constant}
-\macrodef{dturn}{dturn}{({\sl degrees ccw})}
+\macrodef{dturn}{dturn}{({\sl degrees ccw},{\sl line thickness},
+  {\sl attributes})}
   {darrow}
-  {turn dline arg1 degrees left (ccw)}
+  {Tturn dline arg1 degrees left (ccw).
+  Attributes can be
+    {\tt outline=({\sl r, g, b})|"{\sl color}";}
+    {\tt innershade=({\sl r, g, b})|"{\sl color}";}
+    where rgb values in parentheses or a defined color is specified.}
+%
 \Letter{E}%
-\macrodef{E\_\_}{E__}{}
-  {gen}
-  {the constant $e$}
-\macrodef{e\_}{e_}{}
-  {gen}
-  {.e relative to current direction}
-\macrodef{e\_fet}{e_fet}{(\linespec,R,P,E|S)}
-  {cct}
-  {left or right, N or P enhancement MOSFET, normal
-   or simplified, without or with envelope
-    \seesect{Semiconductors:}}
 \macrodef{earphone}{earphone}{( U|D|L|R|{\sl degrees, size})}
   {cct}
   {earphone, {\sl In1} to {\sl In3} defined
@@ -800,6 +830,17 @@ B|b|CR|D|G|L|LE[R]|P[R]|S|Sh|T|U|V|v|w|Z|chars,%
    terms.  The possible keys are {\tt lgth, wdth, text, box},
    e.g., {\tt lgth=0.2; text=\char34{}XX\char34;
      box=shaded \char34{}green\char34}\seesect{Twoterminal:}}
+\macrodef{E\_\_}{E__}{}
+  {gen}
+  {the constant $e$}
+\macrodef{e\_}{e_}{}
+  {gen}
+  {.e relative to current direction}
+\macrodef{e\_fet}{e_fet}{(\linespec,R,P,E|S)}
+  {cct}
+  {left or right, N or P enhancement MOSFET, normal
+   or simplified, without or with envelope
+    \seesect{Semiconductors:}}
 \macrodef{elchop}{elchop}{({\sl Name1,Name2})}
   {gen}
   {{\tt chop} for ellipses: evaluates to {\tt chop} $r$ where $r$ is
@@ -812,6 +853,13 @@ B|b|CR|D|G|L|LE[R]|P[R]|S|Sh|T|U|V|v|w|Z|chars,%
 \macrodef{elen\_}{elen_}{}
   {cct}
   {default element length}
+\macrodef{ellipsearc}{ellipsearc}{({\sl width, height, startangle, endangle,
+   rotangle, {\tt cw|ccw}, line attributes})}
+  {gen}
+  {Arc of a rotated ellipse in a {\tt [ ]} block. Angles are in radians.
+   Arg5 is the angle of the width axis;
+   e.g., {\tt ellipsearc(2,1,0,pi\_,pi\_/4,{},dashed ->)}.  Internal locations
+   are {\tt Start, End, C} (for centre). }
 \macrodef{em\_arrows}{em_arrows}{({\sl type}|{\sl keys,angle,length})}
   {cct}
   { Radiation arrows: {\sl type} {\tt N|I|E [D|T]}
@@ -832,6 +880,7 @@ B|b|CR|D|G|L|LE[R]|P[R]|S|Sh|T|U|V|v|w|Z|chars,%
 \macrodef{expe}{expe}{}
   {gen}
   {exponential, base $e$}
+%
 \Letter{F}%
 \macrodef{f\_box}{f_box}{({\sl boxspecs},{\sl text},{\sl expr1},$\cdots$)}
   {gen}
@@ -860,11 +909,6 @@ B|b|CR|D|G|L|LE[R]|P[R]|S|Sh|T|U|V|v|w|Z|chars,%
 \macrodef{fitcurve}{fitcurve}{(V,n,[e.g. dotted],m (default 0))}
   {gen}
   {Draw a spline through positions V[m], $ldots$ V[n]: Works only with dpic.}
-\macrodef{FlipFlop}{FlipFlop}{(D|T|RS|JK,{\sl label},{\sl boxspec},%
- {\sl pinlength})}
-  {log}
-  {flip-flops,
-  {\sl boxspec}=e.g.\ ht x wid y \seesect{Logicgates:}}
 \macrodef{FlipFlop6}{FlipFlop6}{({\sl label},{\sl spec},{\sl boxspec})}
   {log}
   {{\em This macro (6-input flip-flops)
@@ -873,6 +917,11 @@ B|b|CR|D|G|L|LE[R]|P[R]|S|Sh|T|U|V|v|w|Z|chars,%
     {\sl spec}={\tt [[n]NQ][[n]Q][[n]CK][[n]PR][lb]}
     {\tt [[n]CLR][[n]S][[n].|D|T|R]} to include and negate pins,
     {\tt lb} to print labels }
+\macrodef{FlipFlop}{FlipFlop}{(D|T|RS|JK,{\sl label},{\sl boxspec},%
+ {\sl pinlength})}
+  {log}
+  {flip-flops,
+  {\sl boxspec}=e.g.\ ht x wid y \seesect{Logicgates:}}
 \macrodef{FlipFlopJK}{FlipFlopJK}{({\sl label}, {\sl spec},{\sl boxspec})}
   {log}
   {{\em This macro (JK flip-flop)
@@ -903,9 +952,6 @@ B|b|CR|D|G|L|LE[R]|P[R]|S|Sh|T|U|V|v|w|Z|chars,%
  {\tt L}=active low out; {\tt M}=active low in;
  {\tt E}=edge trigger \seesect{Logicgates:}. Optional arg 7 is the length
  of pins}
-\macrodef{for\_}{for_}{({\sl start},{\sl end},{\sl increment},`{\sl actions}')}
-  {gen}
-  {integer for loop with index variable {\tt m4x} \seesect{Looping:}}
 \macrodef{foreach\_}{foreach_}{(`{\sl variable}',{\sl actions},{\sl
   value1, value2, $\ldots$})}
   {gen}
@@ -913,6 +959,9 @@ B|b|CR|D|G|L|LE[R]|P[R]|S|Sh|T|U|V|v|w|Z|chars,%
    Repeat {\sl actions} with {\sl variable} set successively to
    {\sl value1, value2, $\ldots$}, setting macro {\tt m4Lx} to 1, 2,
    $\ldots$, terminating if {\sl variable} is nul}
+\macrodef{for\_}{for_}{({\sl start},{\sl end},{\sl increment},`{\sl actions}')}
+  {gen}
+  {integer for loop with index variable {\tt m4x} \seesect{Looping:}}
 \macrodef{FTcap}{FTcap}{({\sl chars})}
   {cct}
   {Feed-through capacitor; example of a composite element derived from
@@ -923,17 +972,8 @@ B|b|CR|D|G|L|LE[R]|P[R]|S|Sh|T|U|V|v|w|Z|chars,%
   {cct}
   {fuse symbol, type$=$
   {\tt  A|B|C|D|S|HB|HC|SB} or {\tt dA=D}\seesect{Twoterminal:}}
+%
 \Letter{G}%
-\macrodef{g\_}{g_}{}
-  {gen}
-  {green color value}
-\macrodef{G\_hht}{G_hht}{}
-  {log}
-  {gate half-height in {\tt L\_unit}s}
-\macrodef{g\_fet}{g_fet}{(\linespec,R,P,{\sl shade spec})}
-  {cct}
-  {left or right, N or P graphene FET, without or with shading
-    \seesect{Semiconductors:}}
 \macrodef{gap}{gap}{(\linespec,{\sl fill},A)}
   {cct}
   {gap with (filled) dots, A=chopped arrow between dots\seesect{Twoterminal:}}
@@ -941,6 +981,16 @@ B|b|CR|D|G|L|LE[R]|P[R]|S|Sh|T|U|V|v|w|Z|chars,%
   {gen}
   {initialize environment for general diagrams
     (customizable, reads {\tt libgen.m4})}
+\macrodef{g\_fet}{g_fet}{(\linespec,R,P,{\sl shade spec})}
+  {cct}
+  {left or right, N or P graphene FET, without or with shading
+    \seesect{Semiconductors:}}
+\macrodef{g\_}{g_}{}
+  {gen}
+  {green color value}
+\macrodef{G\_hht}{G_hht}{}
+  {log}
+  {gate half-height in {\tt L\_unit}s}
 \macrodef{glabel\_}{glabel_}{}
   {cct}
   {internal general labeller}
@@ -978,10 +1028,12 @@ B|b|CR|D|G|L|LE[R]|P[R]|S|Sh|T|U|V|v|w|Z|chars,%
   {Gyrator two-port wrapper for {\tt nport}, {\tt N} omits pin dots; {\tt V}
    gives a vertical orientation
    \seesect{Composite:}}
+%
 \Letter{H}%
-\macrodef{H\_ht}{H_ht}{}
-  {log}
-  {hysteresis symbol dimension in {\tt L\_unit}s}
+\macrodef{hatchbox}{hatchbox}{({\sl boxspec,hashsep,hatchspec})}
+  {gen}
+  {Manhattan box with 45 degree hatching, e.g.,
+   {\tt hatchbox(outlined "blue",{},dashed outlined "green" thick 0.4)}}
 \macrodef{Header}{Header}{(1|2,{\sl rows,wid,ht,box attributes})}
   {log}
   {Header block with 1 or 2 columns and square Pin 1:
@@ -995,17 +1047,6 @@ n|e|s|w,{\sl length})}
   {log}
   {General pin for {\tt Header} macro; arg 4 specifies pin direction
    with respect to the current drawing direction)}
-\macrodef{hatchbox}{hatchbox}{({\sl boxspec,hashsep,hatchspec})}
-  {gen}
-  {Manhattan box with 45 degree hatching, e.g.,
-   {\tt hatchbox(outlined "blue",,dashed outlined "green" thick 0.4)}}
-\macrodef{heater}{heater}{({\sl linespec, ndivisions|keys, wid, ht,
-    boxspec}|[E[R][T]])}
-  {cct}
-  {Heater element\seesect{Twoterminal:}. If arg 5 contains {\tt E,}
-    draws an {\tt heatere({\sl linespec, keys,} [R][T]),}
-    otherwise a
-    {\tt heatert({\sl linespec, nparts, wid, ht, boxspec})}} 
 \macrodef{heatere}{heatere}{({\sl linespec, keys,} [R][T])}
   {cct}
   {Heater element with curved sides\seesect{Twoterminal:}.
@@ -1016,6 +1057,13 @@ n|e|s|w,{\sl length})}
     {\tt wdth={\sl expr};} (default {\tt lgth*2/5});
     {\tt cycles={\sl expr};}
     {\tt line={\sl attributes};} (e.g., {\tt dotted, dashed, outlined})}
+\macrodef{heater}{heater}{({\sl linespec, ndivisions|keys, wid, ht,
+    boxspec}|[E[R][T]])}
+  {cct}
+  {Heater element\seesect{Twoterminal:}. If arg 5 contains {\tt E,}
+    draws an {\tt heatere({\sl linespec, keys,} [R][T]),}
+    otherwise a
+    {\tt heatert({\sl linespec, nparts, wid, ht, boxspec})}} 
 \macrodef{heatert}{heatert}{({\sl linespec, nparts|keys, wid, ht, boxspec})}
   {cct}
   {Two-terminal rectangular heater element\seesect{Twoterminal:}.
@@ -1026,13 +1074,16 @@ n|e|s|w,{\sl length})}
     {\tt box={\sl body attributes};}
       (e.g., {\tt dotted, dashed, outlined, shaded}).
     Args 3--5 are unused if any key is given}
-\macrodef{hex\_digit}{hex_digit}{($n$)}
-  {gen}
-  {hexadecimal digit for $0 \leq n < 16$}
 \macrodef{hexadecimal\_}{hexadecimal_}{($n$, [$m$])}
   {gen}
   {hexadecimal representation of $n,$ left padded to $m$ digits if the second
    argument is nonblank}
+\macrodef{hex\_digit}{hex_digit}{($n$)}
+  {gen}
+  {hexadecimal digit for $0 \leq n < 16$}
+\macrodef{H\_ht}{H_ht}{}
+  {log}
+  {hysteresis symbol dimension in {\tt L\_unit}s}
 \macrodef{hlth}{hlth}{}
   {gen}
   {current line half thickness in drawing units}
@@ -1042,6 +1093,7 @@ n|e|s|w,{\sl length})}
 \macrodef{ht\_}{ht_}{}
   {gen}
   {height relative to current direction}
+%
 \Letter{I}%
 \macrodef{ifdpic}{ifdpic}{({\sl if true},{\sl if false})}
   {gen}
@@ -1086,9 +1138,6 @@ n|e|s|w,{\sl length})}
   {cct}
   {left or right IGBT, L=alternate gate type, D=parallel diode,
    dD=dotted connections }
-\macrodef{in\_\_}{in__}{}
-  {gen}
-  {absolute inches}
 \macrodef{inductor}{inductor}{(\linespec, W|L, {\sl cycles}, M[n]|P[n]|K[n],
    {\sl loop wid})}
   {cct}
@@ -1099,12 +1148,12 @@ n|e|s|w,{\sl length})}
      {\sl M4Core1, M4Core2,} $\ldots$;
    arg5: loop width (default L,W: {\tt dimen\_}/5; other: {\tt dimen\_}/8)
    \seesect{Twoterminal:}}
+\macrodef{in\_\_}{in__}{}
+  {gen}
+  {absolute inches}
 \macrodef{inner\_prod}{inner_prod}{({\sl linear obj},{\sl linear obj})}
   {gen}
   {inner product of (x,y) dimensions of two linear objects}
-\macrodef{Int\_}{Int_}{}
-  {gen}
-  {corrected (old) gpic $int()$ function}
 \macrodef{integrator}{integrator}{(\linespec,{\sl size})}
   {cct}
   {integrating amplifier\seesect{Twoterminal:}}
@@ -1115,23 +1164,27 @@ n|e|s|w,{\sl length})}
 \macrodef{Intersect\_}{Intersect_}{({\sl Name1},{\sl Name2})}
   {gen}
   {intersection of two named lines}
+\macrodef{Int\_}{Int_}{}
+  {gen}
+  {corrected (old) gpic $int()$ function}
 \macrodef{IOdefs}{IOdefs}{(\linespec,{\sl label},[P|N]*,L|R) }
   {log}
   {Define locations {\sl label}{\tt 1}, $\ldots$ {\sl label}{\tt n}
     along the line; {\tt P}= label only;
     {\tt N}=with {\tt NOT\_circle};
     {\tt R}=circle to right of current direction }
+%
 \Letter{J}%
-\macrodef{j\_fet}{j_fet}{(\linespec,L|R,P,E)}
-  {cct}
-  {left or right, N or P JFET, without or with envelope
-    \seesect{Semiconductors:}}
 \macrodef{jack}{jack}{(U|D|L|R|{\sl degrees},{\sl chars})}
   {cct}
   {arg1: drawing direction; string arg2: {\tt R}=right orientation,
    one or more {\tt L[M][B]} for L and auxiliary contacts with make or break
    points; {\tt S[M][B]} for S and auxiliary contacts
    \seesect{Composite:}}
+\macrodef{j\_fet}{j_fet}{(\linespec,L|R,P,E)}
+  {cct}
+  {left or right, N or P JFET, without or with envelope
+    \seesect{Semiconductors:}}
 \macrodef{jumper}{jumper}{({\sl linespec, chars}|{\sl keys})}
   {cct}
   { Two-terminal solder jumper with named body parts.
@@ -1147,19 +1200,22 @@ n|e|s|w,{\sl length})}
                         {\tt wdth=}{\sl expr};
                         {\tt name=}{\sl chars} (the body name)%
 \seesect{Twoterminal:}}
+%
 \Letter{K}%
 \macrodef{KelvinR}{KelvinR}{({\sl cycles},[R],{\sl cycle wid})}
   {cct}
   {IEEE resistor in a {\tt [ ]} block with Kelvin taps {\sl T1} and {\sl T2}
    \seesect{Composite:}}
+%
 \Letter{L}%
-\macrodef{L\_unit}{L_unit}{}
-  {log}
-  {logic-element grid size}
 \macrodef{lamp}{lamp}{(\linespec, [R][T])}
   {cct}
   {Two-terminal incandescent lamp. {\tt T} truncates leads to the body width.
    \seesect{Twoterminal:}}
+\macrodef{langle}{langle}{({\sl Start, End})}
+  {gen}
+  {Angle in radians from horizontal of the line from {\sl Start}
+  to {\sl End}.}
 \macrodef{larrow}{larrow}{({\sl label},{\tt ->|<-},{\sl dist})}
   {cct}
   {arrow {\sl dist} to left of last-drawn 2-terminal element
@@ -1177,13 +1233,13 @@ n|e|s|w,{\sl length})}
 \macrodef{left\_}{left_}{}
   {gen}
   {left with respect to current direction \seesect{Placing:}}
-\macrodef{length3D}{length3D}{(x,y,z)}
-  {3D}
-  {Euclidean length of triple x,y,z}
 \macrodef{LEintersect}{LEintersect}{({\sl line name, Centre, ellipse wid,
   ellipse ht}, [R])}
   {gen}
   { First (second if arg5 is R) intersection of a line with an ellipse}
+\macrodef{length3D}{length3D}{(x,y,z)}
+  {3D}
+  {Euclidean length of triple x,y,z}
 \macrodef{LEtangent}{LEtangent}{({\sl Pos1, Centre, ellips wid, ellipse ht}
  [R])}
   {gen}
@@ -1218,13 +1274,13 @@ n|e|s|w,{\sl length})}
   {gen}
   {the angle of a line or move from {\tt .start} to {\tt .end} of a linear
    object (in degrees if arg2={\tt d})}
+\macrodef{linethick\_}{linethick_}{({\sl number})}
+  {gen}
+  {set line thickness in points}
 \macrodef{lin\_leng}{lin_leng}{({\sl line-reference})}
   {gen}
   {length of a line, equivalent to {\sl line-reference}{\tt .len}
    with dpic}
-\macrodef{linethick\_}{linethick_}{({\sl number})}
-  {gen}
-  {set line thickness in points}
 \macrodef{ljust\_}{ljust_}{}
   {gen}
   {ljust with respect to current direction}
@@ -1243,44 +1299,48 @@ n|e|s|w,{\sl length})}
 \macrodef{loc\_}{loc_}{({\sl x}, {\sl y})}
   {gen}
   {location adjusted for current direction}
-\macrodef{log\_init}{log_init}{}
-  {log}
-  {initialize environment for logic diagrams
-    (customizable, reads {\tt liblog.m4})}
 \macrodef{log10E\_}{log10E_}{}
   {gen}
   {constant $\log_{10}(e)$}
 \macrodef{loge}{loge}{}
   {gen}
   {logarithm, base $e$}
+\macrodef{log\_init}{log_init}{}
+  {log}
+  {initialize environment for logic diagrams
+    (customizable, reads {\tt liblog.m4})}
 \macrodef{Loopover\_}{Loopover_}{(`{\sl variable}',{\sl actions},{\sl
   value1, value2, $\ldots$})}
   {gen}
   {Repeat {\sl actions} with {\sl variable} set successively to
    {\sl value1, value2, $\ldots$}, setting macro {\tt m4Lx} to 1, 2,
    $\ldots$, terminating if {\sl variable} is nul}
-\macrodef{lp\_xy}{lp_xy}{}
-  {log}
-  {coordinates used by {\tt lg\_pin}}
 \macrodef{lpop}{lpop}{({\sl xcoord}, {\sl ycoord}, {\sl radius},
 {\sl fill},
   {\sl zero ht})} {gen}
   {for lollipop graphs: filled circle with stem to
   (xcoord,zeroht)}
+\macrodef{lp\_xy}{lp_xy}{}
+  {log}
+  {coordinates used by {\tt lg\_pin}}
 \macrodef{lswitch}{lswitch}{( \linespec, L|R, {\sl chars} )}
   {cct}
   {knife switch R=right orientation (default L=left);
     {\sl chars}=[O{\tt|}C][D][K][A] O=opening arrow; C=closing arrow;
     D=dots; K=closed switch; A=blade arrowhead \seesect{Twoterminal:}}
+\macrodef{lthick}{lthick}{}
+  {gen}
+  {current line thickness in drawing units}
 \macrodef{lt\_}{lt_}{}
   {gen}
   {left with respect to current direction}
 \macrodef{LT\_symbol}{LT_symbol}{(U|D|L|R|{\sl degrees})}
   {log}
   {logic-gate triangle symbol}
-\macrodef{lthick}{lthick}{}
-  {gen}
-  {current line thickness in drawing units}
+\macrodef{L\_unit}{L_unit}{}
+  {log}
+  {logic-element grid size}
+%
 \Letter{M}%
 \macrodef{m4\_arrow}{m4_arrow}{(\linespec,{\sl ht},{\sl wid})}
   {gen}
@@ -1360,9 +1420,6 @@ n|e|s|w,{\sl length})}
 \macrodef{Mux\_ht}{Mux_ht}{}
   {cct}
   {Mux height parameter in {\tt L\_unit}s}
-\macrodef{Mux\_wid}{Mux_wid}{}
-  {cct}
-  {Mux width parameter in {\tt L\_unit}s}
 \macrodef{Mux}{Mux}{({\sl n},{\sl label},
    {\tt [L][B|H|X][N[{\sl n}]|S[{\sl n}]][[N]OE], {\sl wid},{\sl ht}})}
   {log}
@@ -1373,28 +1430,23 @@ n|e|s|w,{\sl length})}
     at the top (i.e., to the left of the drawing direction), {\tt
     S[{\sl n}]} puts the Sel inputs at the bottom (default) {\tt OE}
     ({\tt N=}negated) {\tt OE} pin \seesect{Logicgates:}}
+\macrodef{Mux\_wid}{Mux_wid}{}
+  {cct}
+  {Mux width parameter in {\tt L\_unit}s}
 \macrodef{Mx\_pins}{Mx_pins}{}
   {log}
   {max number of gate inputs without wings}
+%
 \Letter{N}%
-\macrodef{n\_}{n_}{}
-  {gen}
-  {.n with respect to current direction}
-\macrodef{N\_diam}{N_diam}{}
-  {log}
-  {diameter of `not' circles in {\tt L\_unit}s}
-\macrodef{N\_rad}{N_rad}{}
-  {log}
-  {radius of `not' circles in {\tt L\_unit}s}
 \macrodef{NAND\_gate}{NAND_gate}{({\sl n},N)}
   {log}
   {`nand' gate, 2 or {\sl n\/} inputs; N=negated input.
    Otherwise, arg1 can be a sequence of letters {\tt P|N} to define
    normal or negated inputs.
     \seesect{Logicgates:}}
-\macrodef{ne\_}{ne_}{}
-  {gen}
-  {.ne with respect to current direction}
+\macrodef{N\_diam}{N_diam}{}
+  {log}
+  {diameter of `not' circles in {\tt L\_unit}s}
 \macrodef{NeedDpicTools}{NeedDpicTools}{}
   {gen}
   {executes {\tt copy "HOMELIB\_/dpictools.pic"} if the file has
@@ -1402,15 +1454,21 @@ n|e|s|w,{\sl length})}
 \macrodef{neg\_}{neg_}{}
   {gen}
   {unary negation}
+\macrodef{ne\_}{ne_}{}
+  {gen}
+  {.ne with respect to current direction}
+\macrodef{n\_}{n_}{}
+  {gen}
+  {.n with respect to current direction}
+\macrodef{norator}{norator}{(\linespec,{\sl width},{\sl ht})}
+  {cct}
+  { norator two-terminal element \seesect{Twoterminal:}}
 \macrodef{NOR\_gate}{NOR_gate}{({\sl n},N)}
   {log}
   {`nor' gate, 2 or {\sl n\/} inputs; N=negated input.
    Otherwise, arg1 can be a sequence of letters {\tt P|N} to define
    normal or negated inputs.
     \seesect{Logicgates:}}
-\macrodef{norator}{norator}{(\linespec,{\sl width},{\sl ht})}
-  {cct}
-  { norator two-terminal element \seesect{Twoterminal:}}
 \macrodef{NOT\_circle}{NOT_circle}{}
   {log}
   {`not' circle}
@@ -1441,6 +1499,9 @@ nw,nn,ne,ns,space ratio,pin lgth,style, other commands})}
     (default 2), and arg 7 is the pin length.  Set arg 8 to N to omit
     the dots on the port pins. Arguments 1 and 9 allow customizations
    \seesect{Composite:}}
+\macrodef{N\_rad}{N_rad}{}
+  {log}
+  {radius of `not' circles in {\tt L\_unit}s}
 \macrodef{nterm}{nterm}{({\sl box spec{\tt ;}other commands,
 nw,nn,ne,ns,pin lgth,style, other commands})}
   {cct}
@@ -1463,6 +1524,7 @@ nw,nn,ne,ns,pin lgth,style, other commands})}
    Otherwise, arg1 can be a sequence of letters {\tt P|N} to define
    normal or negated inputs.
     \seesect{Logicgates:}}
+%
 \Letter{O}%
 \macrodef{opamp}{opamp}{(\linespec,{\sl label},{\sl
 label},{\sl size},{\sl
@@ -1495,9 +1557,9 @@ label},{\sl size},{\sl
 \macrodef{OR\_rad}{OR_rad}{}
   {log}
   {radius of OR input face in {\tt L\_unit}s}
+%
 \Letter{P}%
-\macrodef{parallel\_}{parallel_}{(\char96{\sl
-elementspec}\char39,%
+\macrodef{parallel\_}{parallel_}{(\char96{\sl elementspec}\char39,%
  \char96{\sl elementspec}\char39 $\ldots$)}
   {cct}
   { Parallel combination of two-terminal elements in a {\tt [
@@ -1512,20 +1574,6 @@ elementspec}\char39,%
     element Sep={\sl val}; applies only to that branch.  An element may
     have normal arguments but should not change the drawing direction.
    \seesect{Seriesandparallel:}}
-%\macrodef{par\_}{par_}{({\sl element},{\sl element},{\sl separation})}
-%  {cct} %  {two same-direction, same-length elements in parallel}
-\macrodef{proximity}{proximity}{(\sl linespec)}
-  {cct}
-  {proximity detector (= {\tt consource(,P)})}
-\macrodef{pc\_\_}{pc__}{}
-  {gen}
-  {absolute points}
-\macrodef{pvcell}{pvcell}{({\sl linespec, width, height})}
-  {cct}
-  {PV cell}
-\macrodef{px\_\_}{px__}{}
-  {gen}
-  {absolute SVG screen pixels}
 \macrodef{pconnex}{pconnex}{(R|L|U|D|{\sl degrees},{\sl chars})}
   {cct}
   {power connectors, arg 1: drawing direction; {\sl chars:}
@@ -1533,6 +1581,19 @@ elementspec}\char39,%
    3 prong, B=box, C=circle, {\tt P}= PC connector, {\tt D}= 2-pin
    connector, {\tt G|GC}= GB 3-pin, {\tt J}= 110V 2-pin
     \seesect{Composite:}}
+\macrodef{pc\_\_}{pc__}{}
+  {gen}
+  {absolute points}
+\macrodef{perpto}{perpto}{({\sl Pos1, Line, Point})}
+  {gen}
+  {{\sl Point} is the label for the point on {\sl Line} of the
+  perpendicular
+   from {\sl Point} to {\sl Line}.}
+\macrodef{PerpTo}{PerpTo}{({\sl Pos1, Pos2, Pos3})}
+  {gen}
+  {The point between Pos2 and Pos3 of intersection of the perpendicular
+   to Pos1, i.e., the perpendicular projection of Pos1 onto the line
+   from Pos2 to Pos3.}
 \macrodef{pi\_}{pi_}{}
   {gen}
   {$\pi$}
@@ -1546,26 +1607,12 @@ elementspec}\char39,%
 \macrodef{point\_}{point_}{({\sl angle})}
   {gen}
   {(radians) set direction cosines}
-\macrodef{perpto}{perpto}{({\sl Pos1, Line, Point})}
-  {gen}
-  {{\sl Point} is the label for the point on {\sl Line} of the
-  perpendicular
-   from {\sl Point} to {\sl Line}.}
-\macrodef{PerpTo}{PerpTo}{({\sl Pos1, Pos2, Pos3})}
-  {gen}
-  {The point between Pos2 and Pos3 of intersection of the perpendicular
-   to Pos1, i.e., the perpendicular projection of Pos1 onto the line
-   from Pos2 to Pos3.}
 \macrodef{Point\_}{Point_}{({\sl integer})}
   {gen}
   {sets direction cosines in degrees \seesect{Placing:}}
 \macrodef{polar\_}{polar_}{({\sl x},{\sl y})}
   {gen}
   {rectangular-to polar conversion}
-\macrodef{langle}{langle}{({\sl Start, End})}
-  {gen}
-  {Angle in radians from horizontal of the line from {\sl Start}
-  to {\sl End}.}
 \macrodef{potentiometer}{potentiometer}{(\linespec,%
   {\sl cycles},{\sl fractional pos},{\sl length},$\cdots$)} {cct}
   {resistor with taps T1, T2, $\ldots$
@@ -1580,17 +1627,20 @@ elementspec}\char39,%
   {3D} {3D to 2D projection onto the plane perpendicular to the view
   vector with
    angles defined by {\tt setview({\sl azim, elev})}}
+\macrodef{proximity}{proximity}{(\sl linespec)}
+  {cct}
+  {proximity detector (= {\tt consource(,P)})}
 \macrodef{psset\_}{psset_}{({\sl PSTricks settings})}
   {gen}
   {set PSTricks parameters}
-\macrodef{pt\_\_}{pt__}{}
-  {gen}
-  {\TeX\ point-size factor, in scaled inches, ({\tt *scale/72.27})}
 \macrodef{PtoL}{PtoL}{({\sl position}, U|D|L|R|{\sl degrees}, {\sl length}) }
   {gen}
   {Evaluates to {\tt from {\sl position} to
    {\sl position} + Rect\_({\sl length, angle}) }
    from the polar-coordinate data in the arguments }
+\macrodef{pt\_\_}{pt__}{}
+  {gen}
+  {\TeX\ point-size factor, in scaled inches, ({\tt *scale/72.27})}
 \macrodef{ptrans}{ptrans}{(\linespec, [R|L])}
   {cct}
   {pass transistor; {\tt L=} left orientation
@@ -1613,10 +1663,14 @@ elementspec}\char39,%
    which must contain no semicolons and the default values contain no colons.
    Macro {\tt pushkey\_} is applied to each of the terms in order.
    \seesect{Macroarguments:}}
-\Letter{R}%
-\macrodef{r\_}{r_}{}
+\macrodef{pvcell}{pvcell}{({\sl linespec, width, height})}
+  {cct}
+  {PV cell}
+\macrodef{px\_\_}{px__}{}
   {gen}
-  {red color value}
+  {absolute SVG screen pixels}
+%
+\Letter{R}%
 \macrodef{rarrow}{rarrow}{({\sl label,{\tt ->|<-},{\sl dist}})}
   {cct}
   {arrow {\sl dist} to right of last-drawn 2-terminal element
@@ -1629,18 +1683,10 @@ elementspec}\char39,%
   {(radians) polar-rectangular conversion}
 \macrodef{reed}{reed}{({\sl linespec, width, height, box attribues},
 [R][C])}
-  {cct}
-  {Enclosed reed two-terminal contact;
-   {\tt R}=right orientation; {\tt C}=closed contact; e.g., {\tt
-   reed(,,dimen\_/5,shaded "lightgreen"} \seesect{Composite:}}
-\macrodef{relay}{relay}{({\sl number of poles, chars})}
-  {cct}
-  {relay: n poles (default 1), {\sl chars:} {\tt O}=normally open,
-    {\tt C}=normally closed, {\tt P}=three position, default double
-    throw, {\tt L}=drawn left (default), {\tt R}=drawn right, {\tt
-    Th}=thermal.  Argument 3={\tt [L|R]} is deprecated but works for
-    backward compatibility
-   \seesect{Composite:}}
+  {cct}
+  {Enclosed reed two-terminal contact;
+   {\tt R}=right orientation; {\tt C}=closed contact; e.g., {\tt
+   reed(,,dimen\_/5,shaded "lightgreen"} \seesect{Composite:}}
 \macrodef{relaycoil}{relaycoil}{({\sl chars, wid, ht,} R|L|U|D|{\sl
 degrees})}
   {cct}
@@ -1654,6 +1700,14 @@ degrees})}
     PO}=polarized; {\tt RM}=remanent; {\tt RH}=remanent; {\tt TH}=thermal;
     {\tt EL}=electronic
    \seesect{Composite:}}
+\macrodef{relay}{relay}{({\sl number of poles, chars})}
+  {cct}
+  {relay: n poles (default 1), {\sl chars:} {\tt O}=normally open,
+    {\tt C}=normally closed, {\tt P}=three position, default double
+    throw, {\tt L}=drawn left (default), {\tt R}=drawn right, {\tt
+    Th}=thermal.  Argument 3={\tt [L|R]} is deprecated but works for
+    backward compatibility
+   \seesect{Composite:}}
 \macrodef{resetdir\_}{resetdir_)}{}
   {gen}
   {resets direction set by {\tt setdir\_}}
@@ -1699,21 +1753,14 @@ degrees})}
    rgbstring(0.1,0.2,0.7) shaded rgbstring(0.75,0.5,0.25)}.  For those
    postprocessors that allow it, there can be one argument which is the
    name of a defined color}
-\macrodef{right\_}{right_}{}
-  {gen}
-  {set current direction right \seesect{Placing:}}
 \macrodef{RightAngle}{RightAngle}{({\sl Pos1, Pos2, Pos3, line len,
   attributes})} {gen}
   {Draw a right-angle symbol at {\sl Pos2}, of size
   given by arg4. Arg5 =
    line attributes, e.g., {\tt outlined "gray"}}
-\macrodef{r\_text}{r_text}{({\sl degrees},{\sl text},at {\sl position})}
+\macrodef{right\_}{right_}{}
   {gen}
-  {Rotate text by arg1 degrees (provides a single command for
-   PSTricks, PGF, or SVG only) placed at position in arg3.
-   The first argument is a decimal constant (not an expression) and
-   the text is a simple string without quotes.
-   \seesect{Interaction:}, \seesect{Pstricks:}}
+  {set current direction right \seesect{Placing:}}
 \macrodef{rjust\_}{rjust_}{}
   {gen}
   {right justify with respect to current direction}
@@ -1735,12 +1782,6 @@ degrees})}
   {3D} {rotates x,y,z about y axis}
 \macrodef{rot3Dz}{rot3Dz}{({\sl radians,x,y,z})}
   {3D} {rotates x,y,z about z axis}
-\macrodef{Rot\_}{Rot_}{({\sl position, degrees})}
-  {gen}
-  {rotate position by degrees}
-\macrodef{rot\_}{rot_}{({\sl x, y, angle})}
-  {gen}
-  {rotate {\sl x,y} by theta radians}
 \macrodef{rotbox}{rotbox}{({\sl wid,ht,type},[r|t={\sl val}])}
   {gen}
   {box oriented in current direction in {\tt [ ]} block;
@@ -1754,6 +1795,12 @@ degrees})}
   {ellipse oriented in current direction in {\tt [ ]} block;
    e.g. {\tt Point\_(45); rotellipse(,{},dotted fill\_(0.9)).} Defined
    internal locations: N, S, E, W.}
+\macrodef{Rot\_}{Rot_}{({\sl position, degrees})}
+  {gen}
+  {rotate position by degrees}
+\macrodef{rot\_}{rot_}{({\sl x, y, angle})}
+  {gen}
+  {rotate {\sl x,y} by theta radians}
 \macrodef{round}{round}{(at {\sl location,line thickness,attributes})}
   {gen}
   {filled circle for rounded corners; attributes={\tt colored
@@ -1766,6 +1813,9 @@ degrees})}
 \macrodef{rpos\_}{rpos_}{({\sl position})}
   {gen}
   {Here + {\sl position}}
+\macrodef{r\_}{r_}{}
+  {gen}
+  {red color value}
 \macrodef{rrot\_}{rrot_}{({\sl x, y, angle})}
   {gen}
   {\tt Here + vrot\_({\sl x, y, cos(angle), sin(angle))}}
@@ -1785,63 +1835,49 @@ degrees})}
 \macrodef{rsvec\_}{rsvec_}{({\sl position})}
   {gen}
   {Here + {\sl position}}
-\macrodef{rt\_}{rt_}{}
+\macrodef{r\_text}{r_text}{({\sl degrees},{\sl text},at {\sl position})}
   {gen}
-  {right with respect to current direction}
+  {Rotate text by arg1 degrees (provides a single command for
+   PSTricks, PGF, or SVG only) placed at position in arg3.
+   The first argument is a decimal constant (not an expression) and
+   the text is a simple string without quotes.
+   \seesect{Interaction:}, \seesect{Pstricks:}}
 \macrodef{rtod\_\_}{rtod__}{}
   {gen}
   {constant, degrees/radian}
 \macrodef{rtod\_}{rtod_}{}
   {gen}
   {constant, degrees/radian}
+\macrodef{rt\_}{rt_}{}
+  {gen}
+  {right with respect to current direction}
 \macrodef{rvec\_}{rvec_}{({\sl x},{\sl y})}
   {gen}
   {location relative to current direction}
+%
 \Letter{S}%
-\macrodef{s\_}{s_}{}
-  {gen}
-  {.s with respect to current direction}
-\macrodef{s\_box}{s_box}{({\sl text},{\sl expr1},$\cdots$)}
-  {gen}
-  {generate dimensioned text string using {\tt\char92{}boxdims} from
-    {\tt boxdims.sty}. Two or more args are passed to {\tt sprintf()}
-   (default 90) degrees \seesect{Interaction:}}
-\macrodef{s\_dp}{s_dp}{({\sl name},{\sl default})}
-  {gen}
-  {depth of the most recent (or named) {\tt s\_box}
-    \seesect{Interaction:}}
-\macrodef{s\_ht}{s_ht}{({\sl name},{\sl default})}
-  {gen}
-  {height of the most recent (or named) {\tt s\_box}
-    \seesect{Interaction:}}
-\macrodef{s\_init}{s_init}{({\sl name})}
-  {gen}
-  {initialize {\tt s\_box} string label to {\sl name} which should
-  be unique
-    \seesect{Interaction:}}
-\macrodef{s\_name}{s_name}{}
-  {gen}
-  {the value of the last {\tt s\_init} argument
-    \seesect{Interaction:}}
-\macrodef{s\_wd}{s_wd}{({\sl name},{\sl default})}
-  {gen}
-  {width of the most recent (or named) {\tt s\_box}
-    \seesect{Interaction:}}
 \macrodef{sarrow}{sarrow}{(\linespec,{\sl keys})}
   {gen}
   {Single-segment, single-headed special arrows.
     The {\sl keys} are
        {\tt type=}{\tt O[pen]} (default)
-          | {\tt D[iamond]} | {\tt C[rowfoot]} | {\tt P[lain]}{\tt ;}
+          | {\tt D[iamond]} | {\tt C[rowfoot]} | {\tt P[lain]} 
+          | {\tt R[ight]} | {\tt L[eft]} {\tt ;}
        {\tt wdth=}{\tt expression}{\tt ;} (default {\tt arrowwid})
        {\tt lgth=}{\tt expression}{\tt ;} (default {\tt arrowht})
        {\tt shaft=}{\sl shaft attributes} (e.g., {\tt dashed}){\tt ;}
        {\tt head=}{\sl head attributes} (e.g., {\tt shaded}){\tt ;}
+       {\tt name=}{\sl Name}{\tt ;} (default {\sl Sarrow\_})
   \seesect{Macroarguments:}}
 \macrodef{savem4dir}{savem4dir}{([`{\sl stack name}'])}
   {gen}
   {Stack m4 direction parameters in the named stack
     (default {\tt `savm4dir\_'})}
+\macrodef{s\_box}{s_box}{({\sl text},{\sl expr1},$\cdots$)}
+  {gen}
+  {generate dimensioned text string using {\tt\char92{}boxdims} from
+    {\tt boxdims.sty}. Two or more args are passed to {\tt sprintf()}
+   (default 90) degrees \seesect{Interaction:}}
 \macrodef{sbs}{sbs}{({\sl linespec, chars, label})}
   {cct}
   {Wrapper to place an SBS thyristor as a two-terminal element with
@@ -1860,9 +1896,10 @@ degrees})}
   {Wrapper to place an SCS thyristor as a two-terminal element with
    {\tt [ ]} block label given by the third argument
     \seesect{Semiconductors:}}
-\macrodef{se\_}{se_}{}
+\macrodef{s\_dp}{s_dp}{({\sl name},{\sl default})}
   {gen}
-  {.se with respect to current direction}
+  {depth of the most recent (or named) {\tt s\_box}
+    \seesect{Interaction:}}
 \macrodef{series\_}{series_}{({\sl elementspec}, {\sl elementspec},
 $\ldots$)}
   {cct}
@@ -1873,6 +1910,9 @@ $\ldots$)}
     [rlabel($\ldots$);] [b\_current($\ldots$);]}.  Internal points {\tt
     Start}, {\tt End}, and {\tt C} are defined
    \seesect{Seriesandparallel:} }
+\macrodef{se\_}{se_}{}
+  {gen}
+  {.se with respect to current direction}
 \macrodef{setdir\_}{setdir_}{(R|L|U|D|{\sl degrees}, {\sl default}
     U|D|R|L|{\sl degrees})}
   {gen}
@@ -1881,11 +1921,6 @@ $\ldots$)}
     resetdir\_}).  The directions may be spelled out, i.e., Right,
     Left, $\ldots$
    \seesect{Seriesandparallel:}}
-\macrodef{setrgb}{setrgb}{({\sl red value, green value, blue value},[{\sl
-   name}])}
-  {gen}
-  {define colour for lines and text, optionally named (default
-   {\tt lcspec}); \seesect{Semiconductors:}}
 \macrodef{setkey\_}{setkey_}{({\sl string, key, default,}[N])}
   {gen}
   {Key-value definition, like {\tt pushkey\_()} but the resulting
@@ -1896,14 +1931,14 @@ $\ldots$)}
   {Multiple key-value definition using {\tt define()} rather than
    {\tt pushdef().} See macro {\tt pushkeys\_}.
    \seesect{Macroarguments:}}
+\macrodef{setrgb}{setrgb}{({\sl red value, green value, blue value},[{\sl
+   name}])}
+  {gen}
+  {define colour for lines and text, optionally named (default
+   {\tt lcspec}); \seesect{Semiconductors:}}
 \macrodef{setview}{setview}{({\sl azimuth degrees},{\sl elevation
 degrees})}
   {3D} {set projection viewpoint}
-\macrodef{sfg\_init}{sfg_init}{({\sl default line len, node rad,
-arrowhd len,
-  arrowhd wid}), (reads {\tt libcct.m4})} {cct}
-  {initialization of signal
-  flow graph macros}
 \macrodef{sfgabove}{sfgabove}{}
   {cct}
   {like above but with extra space}
@@ -1916,6 +1951,11 @@ justification},cw|ccw,
 \macrodef{sfgbelow}{sfgbelow}{}
   {cct}
   {like below but with extra space}
+\macrodef{sfg\_init}{sfg_init}{({\sl default line len, node rad,
+arrowhd len,
+  arrowhd wid}), (reads {\tt libcct.m4})} {cct}
+  {initialization of signal
+  flow graph macros}
 \macrodef{sfgline}{sfgline}{(\linespec,{\sl text},{\sl text
 justification})}
   {cct}
@@ -1932,11 +1972,6 @@ justification})}
   {cct}
   {self-loop drawn at angle {\sl angle} from a node,
      with text label and a size-adjustment parameter }
-\macrodef{shade}{shade}{({\sl gray value},{\sl closed line specs})}
-  {gen}
-  {Fill arbitrary closed curve. Note: when producing pdf via pdflatex, line
-   thickness changes within this macro must be made via the {\tt linethick}
-   environment variable rather than by the {\tt thickness} line attribute}
 \macrodef{shadebox}{shadebox}{(box {\sl attributes, shade width})}
   {gen}
   {Box with edge shading.  Arg2 is in points. See also {\tt shaded} }
@@ -1950,6 +1985,11 @@ justification})}
    the form 0, r0,g0,b0, {\sl frac1},r1,g1,b1, {\sl frac2},r2,g2,b2,
    \ldots 1,rn,gn,bn with $0 < \hbox{\sl frac1} < \hbox{\sl frac2}
    \ldots 1$ }
+\macrodef{shade}{shade}{({\sl gray value},{\sl closed line specs})}
+  {gen}
+  {Fill arbitrary closed curve. Note: when producing pdf via pdflatex, line
+   thickness changes within this macro must be made via the {\tt linethick}
+   environment variable rather than by the {\tt thickness} line attribute}
 \macrodef{shadowed}{shadowed}{(box|circle|ellipse|line,
   {\sl position spec, keys})}
   {gen}
@@ -1969,6 +2009,10 @@ justification})}
     (default) to enclose the element body; L for the left side with
     respect to drawing direction, R for right. Internal points {\tt
     .Start, .End,} and {\tt .C} are defined}
+\macrodef{s\_ht}{s_ht}{({\sl name},{\sl default})}
+  {gen}
+  {height of the most recent (or named) {\tt s\_box}
+    \seesect{Interaction:}}
 \macrodef{SIdefaults}{SIdefaults}{}
   {gen}
   {Sets {\tt scale = 25.4} for drawing units in mm, and sets
@@ -1979,15 +2023,20 @@ justification})}
 \macrodef{sign\_}{sign_}{({\sl number})}
   {gen}
   {sign function}
-\macrodef{Sin}{Sin}{({\sl integer})}
-  {gen}
-  {sine function, {\sl integer\/} degrees}
 \macrodef{sinc}{sinc}{({\sl number})}
   {gen}
   {the $\hbox{sinc}(x)$ function}
 \macrodef{sind}{sind}{({\sl arg})}
   {gen}
   {sine of an expression in degrees}
+\macrodef{s\_init}{s_init}{({\sl name})}
+  {gen}
+  {initialize {\tt s\_box} string label to {\sl name} which should
+  be unique
+    \seesect{Interaction:}}
+\macrodef{Sin}{Sin}{({\sl integer})}
+  {gen}
+  {sine function, {\sl integer\/} degrees}
 \macrodef{sinusoid}{sinusoid}{({\sl amplitude, frequency, phase, tmin,
   tmax, linetype})}
   {gen}
@@ -2234,6 +2283,36 @@ justification})}
    {\tt size=}{\sl expr} (default {\tt ht dimen\_/3}).
    \seesect{SingleLine:}}
 %
+\macrodef{sl\_transformer3}{sl_transformer3}{({\sl linespec, keys,
+    breaker keys, symbol keys})}
+  {SLD}
+  {Composite (block) SLD element: argument 1 is a \linespec\ that can be used
+   to set the direction and distance between primary terminals but not
+   position.
+
+   Argument 2 contains semicolon (;)-separated key-value body attributes:
+   {\tt name={\sl{}Name}} (default {\sl Body});
+   {\tt type=S|C} (default {\tt S});
+   {\tt scale={\sl expr}} (body size factor, default 1.0);
+   {\tt direct=L|R} (default {\tt L}) direction of the tertiary
+     circle and terminal relative to the drawing direction;
+   {\tt body={\sl circle attributes}}.
+
+   Argument 3 is colon (:)-separated sequence of up to three breaker
+   attribute specifications for the input, output, and teriary breaker
+   in order.  A null or blank means no breaker, {\tt tt\_breaker}
+   specifications otherwise. Default breaker names are {\sl BrI}
+   and {\sl BrO} as for
+   {\tt sl\_transformer,} and {\sl Br} for the third breaker. 
+
+   Argument 4 is colon (:)-separated sequence of up to three symbol
+   specifications for the input, output, and teriary circle
+   in order.  A null or blank means no symbol;
+   {\tt Y} for a Y-symbol;
+   {\tt Delta} for a $\Delta$ symbol;
+   otherwise, other customization commands expanded in a {\tt \lbr\rbr} pair.
+   \seesect{SingleLine:}}
+%
 \macrodef{sl\_transformer}{sl_transformer}{({\sl linespec, keys,
     input breaker keys, output breaker keys,
     input circle inner object, output circle inner object})}
@@ -2273,35 +2352,6 @@ justification})}
    otherwise, other customization commands expanded in a {\tt \lbr\rbr} pair.
    \seesect{SingleLine:}}
 %
-\macrodef{sl\_transformer3}{sl_transformer3}{({\sl linespec, keys,
-    breaker keys, symbol keys})}
-  {SLD}
-  {Composite (block) SLD element: argument 1 is a \linespec\ that can be used
-   to set the direction and distance between primary terminals but not
-   position.
-
-   Argument 2 contains semicolon (;)-separated key-value body attributes:
-   {\tt name={\sl{}Name}} (default {\sl Body});
-   {\tt type=S|C} (default {\tt S});
-   {\tt scale={\sl expr}} (body size factor, default 1.0);
-   {\tt direct=L|R} (default {\tt L}) direction of the tertiary
-     circle and terminal relative to the drawing direction;
-   {\tt body={\sl circle attributes}}.
-
-   Argument 3 is colon (:)-separated sequence of up to three breaker
-   attribute specifications for the input, output, and teriary breaker
-   in order.  A null or blank means no breaker, {\tt tt\_breaker}
-   specifications otherwise. Default breaker names are {\sl BrI}
-   and {\sl BrO} as for
-   {\tt sl\_transformer,} and {\sl Br} for the third breaker. 
-
-   Argument 4 is colon (:)-separated sequence of up to three symbol
-   specifications for the input, output, and teriary circle
-   in order.  A null or blank means no symbol;
-   {\tt Y} for a Y-symbol;
-   {\tt Delta} for a $\Delta$ symbol;
-   otherwise, other customization commands expanded in a {\tt \lbr\rbr} pair.
-   \seesect{SingleLine:}}
 \macrodef{sl\_ttbox}{sl_ttbox}{({\sl linespec, keys, input breaker keys,
     output breaker keys})}
   {SLD}
@@ -2326,34 +2376,38 @@ justification})}
    except that the default breaker name is {\sl BrO}.
    \label{sl_ttbox}%
    \seesect{SingleLine:}}
+\macrodef{s\_name}{s_name}{}
+  {gen}
+  {the value of the last {\tt s\_init} argument
+    \seesect{Interaction:}}
+\macrodef{sourcerad\_}{sourcerad_}{}
+  {cct}
+  {default source radius}
 \macrodef{source}{source}{(\linespec,
-   V|v|I|i|AC|B|F|G|H|J|Q|L|N|P|S[C[r]]|E[r]]|T|X|U|{\sl other}, {\sl
+   V|v|I|i|ii|AC|B|F|G|H|J|Q|L|N|P|S[C[r]]|E[r]]|T|X|U|{\sl other}, {\sl
    diameter},R)}
   {cct}
   {source, blank or:
-                     V = voltage source; v = alternate voltage source; I =
-                     current source; i = alternate current source; AC =
-                     AC source; B = bulb; F = fluorescent; G = generator;
-                     H = step function; L = lamp; N = neon; P = pulse;
-                     Q = charge; R = ramp; r = right orientation; S =
-                     sinusoid; SC = quarter arc; SE = arc; T = triangle;
-                     U = square-wave; X = interior X; other = custom
-                     interior label or waveform; arg 4: R = reversed
-                     polarity; arg 5 modifies the circle with e.g.,
-                     color or fill
+                     V = voltage source; v = alternate voltage source;
+                     I = current source; i = alternate current source;
+                     ii = double arrow current source; AC = AC source;
+                     B = bulb; F = fluorescent; G = generator; H = step
+                     function; L = lamp; N = neon; P = pulse; Q = charge;
+                     R = ramp; r = right orientation; S = sinusoid;
+                     SC = quarter arc; SE = arc; T = triangle; U =
+                     square-wave; X = interior X; other = custom interior
+                     label or waveform; arg 4: R = reversed polarity;
+                     arg 5 modifies the circle with e.g., color or fill
    \seesect{Twoterminal:}}
-\macrodef{sourcerad\_}{sourcerad_}{}
-  {cct}
-  {default source radius}
-\macrodef{sp\_}{sp_}{}
-  {gen}
-  {evaluates to medium space for gpic strings}
 \macrodef{speaker}{speaker}{( U|D|L|R|{\sl degrees},{\sl size},H)}
   {cct}
   {speaker, {\sl In1} to {\sl In7} defined; {\tt H}=horn
    \seesect{Composite:}}
 \macrodef{sprod3D}{sprod3D}{(a,x,y,z)}
   {3D} {scalar product of triple x,y,z by a}
+\macrodef{sp\_}{sp_}{}
+  {gen}
+  {evaluates to medium space for gpic strings}
 \macrodef{sqrta}{sqrta}{({\sl arg})}
   {gen}
   {square root of the absolute value of {\sl arg}; i.e.,
@@ -2364,6 +2418,9 @@ justification})}
    with {\sl }n junctions labeled {\tt J1, ... J}{\sl n} placed around
    a circle with initial angle -90 deg (by default) with respect to the
    current drawing direction. The default diameter is {\tt dimen\_} }
+\macrodef{s\_}{s_}{}
+  {gen}
+  {.s with respect to current direction}
 \macrodef{stackargs\_}{stackargs}{(`{\sl stackname}',{\sl args})}
   {gen}
   {Stack arg 2, arg 3, ... onto the named stack up to a blank arg}
@@ -2398,11 +2455,11 @@ justification})}
   by nonblank
     {\sl separator} (default .).  White space preceding the fields
     is ignored.}
+\macrodef{sum3D}{sum3D}{({\sl x1,y1,z1,x2,y2,z2})}
+  {3D} {sum of two triples}
 \macrodef{sum\_}{sum_}{({\sl a},{\sl b})}
   {gen}
   {binary sum}
-\macrodef{sum3D}{sum3D}{({\sl x1,y1,z1,x2,y2,z2})}
-  {3D} {sum of two triples}
 \macrodef{sus}{sus}{({\sl linespec, chars, label})}
   {cct}
   {Wrapper to place an SUS thyristor as a two-terminal element with
@@ -2411,9 +2468,10 @@ justification})}
 \macrodef{svec\_}{svec_}{({\sl x},{\sl y})}
   {log}
   {scaled and rotated grid coordinate vector}
-\macrodef{sw\_}{sw_}{}
+\macrodef{s\_wd}{s_wd}{({\sl name},{\sl default})}
   {gen}
-  {.sw with respect to current direction}
+  {width of the most recent (or named) {\tt s\_box}
+    \seesect{Interaction:}}
 \macrodef{switch}{switch}{(\linespec,L|R,[C|O][D],[B|D])}
   {cct}
   {SPST switch (wrapper for bswitch, lswitch, and dswitch),
@@ -2423,10 +2481,11 @@ justification})}
      if arg4=B (button switch): arg3 = O{\tt|}C
        O=normally open, C=normally closed,
      if arg4=D: arg3 = same as for dswitch \seesect{Twoterminal:}}
+\macrodef{sw\_}{sw_}{}
+  {gen}
+  {.sw with respect to current direction}
+%
 \Letter{T}%
-\macrodef{ta\_xy}{ta_xy}{({\sl x, y})}
-  {cct}
-  {macro-internal coordinates adjusted for {\tt L|R}}
 \macrodef{tapped}{tapped}{(`{\sl two-terminal element}',
   [{\sl arrowhd} | type={\sl arrowhd};name={\sl Name}],
     {\sl fraction, length, fraction, length,} $\cdots$)}
@@ -2440,6 +2499,9 @@ justification})}
    or Name1, Name2, $\cdots$ if specified.  Internal block names are
    {\tt .Start, .End,} and {.C} corresponding to the drawn element,
    and the tap names \seesect{Composite:} }
+\macrodef{ta\_xy}{ta_xy}{({\sl x, y})}
+  {cct}
+  {macro-internal coordinates adjusted for {\tt L|R}}
 \macrodef{tbox}{tbox}{({\sl text,wid,ht},<|>|<>,{\sl type})}
   {cct}
   {Pointed terminal box. The {\sl text} is placed at the rectangular
@@ -2520,12 +2582,6 @@ justification})}
   {gen}
   {Evaluates to {\tt from {\sl position} - Rect\_({\sl length, angle}) to
    {\sl position}} from the polar-coordinate data in the arguments }
-\macrodef{tr\_xy\_init}{tr_xy_init}{({\sl origin, unit size, sign })}
-  {cct}
-  {initialize {\tt tr\_xy}}
-\macrodef{tr\_xy}{tr_xy}{({\sl x, y})}
-  {cct}
-  {relative macro internal coordinates adjusted for {\tt L|R}}
 \macrodef{transformer}{transformer}{(\linespec,L|R,{\sl np},%
 [A|P][W|L][D1|D2|D12|D21],{\sl ns})}
   {cct}
@@ -2536,6 +2592,12 @@ justification})}
     L = looped windings, D1: phase dots at P1 and S1 end; D2 at P2 and
     S2 end; D12 at P1 and S2 end; D21 at P2 and S1 end
    \seesect{Composite:}}
+\macrodef{tr\_xy\_init}{tr_xy_init}{({\sl origin, unit size, sign })}
+  {cct}
+  {initialize {\tt tr\_xy}}
+\macrodef{tr\_xy}{tr_xy}{({\sl x, y})}
+  {cct}
+  {relative macro internal coordinates adjusted for {\tt L|R}}
 \macrodef{tstrip}{tstrip}{(R|L|U|D|{\sl degrees, nterms, chars})}
   {cct}
   {terminal strip, chars:
@@ -2550,6 +2612,7 @@ brushht})}
 \macrodef{twopi\_}{twopi_}{}
   {gen}
   {$2\pi$}
+%
 \Letter{U}%
 \macrodef{ujt}{ujt}{(\linespec,R,P,E)}
   {cct}
@@ -2563,6 +2626,7 @@ brushht})}
 \macrodef{up\_}{up_}{}
   {gen}
   {set current direction up \seesect{Placing:}}
+%
 \Letter{V}%
 \macrodef{variable}{variable}{(`{\sl element}',
   {\tt [A|P|L|[u]N|[u]NN][C|S]}, [+|-]{\sl angle},
@@ -2616,10 +2680,8 @@ brushht})}
   {{\tt Vsum\_(A,B)} evaluates to {\tt A+B} with dpic, {\tt
   A+(B.x,B.y)}
    with gpic}
+%
 \Letter{W}%
-\macrodef{w\_}{w_}{}
-  {gen}
-  {.w with respect to current direction}
 \macrodef{while\_}{while_}{(`{\sl test}',`{\sl actions}')}
   {gen}
   {Integer m4 while loop}
@@ -2631,6 +2693,9 @@ brushht})}
   {cct}
   {core winding drawn in the current direction; {\tt R}=right-handed
    \seesect{Composite:}}
+\macrodef{w\_}{w_}{}
+  {gen}
+  {.w with respect to current direction}
 \macrodef{XOR\_gate}{XOR_gate}{({\sl n},N)}
   {log}
   {`xor' gate, 2 or {\sl n\/} inputs; N=negated input.
@@ -2640,6 +2705,7 @@ brushht})}
 \macrodef{XOR\_off}{XOR_off}{}
   {log}
   {XOR and NXOR offset of input face}
+%
 \Letter{X}%
 \macrodef{xtal}{xtal}{(\linespec,{\sl keys})}
   {cct}
-- 
cgit v1.2.3

