summaryrefslogtreecommitdiff
path: root/graphics
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2020-05-02 03:03:34 +0000
committerNorbert Preining <norbert@preining.info>2020-05-02 03:03:34 +0000
commit8626a9c3cb5dc8d02d779d5b5b1e3933d5626f43 (patch)
tree3cf05fd2ad850b994dafdcf497738d48a29634ca /graphics
parent7039906aa6676b98933cd099d1cb038f1644c18f (diff)
CTAN sync 202005020303
Diffstat (limited to 'graphics')
-rw-r--r--graphics/circuit_macros/CHANGES126
-rw-r--r--graphics/circuit_macros/Copying2
-rw-r--r--graphics/circuit_macros/INSTALL76
-rw-r--r--graphics/circuit_macros/README223
-rw-r--r--graphics/circuit_macros/darrow.m42
-rw-r--r--graphics/circuit_macros/doc/AmpTable.tex73
-rw-r--r--graphics/circuit_macros/doc/AmpTableMan.m4 (renamed from graphics/circuit_macros/doc/AmpTable.m4)0
-rw-r--r--graphics/circuit_macros/doc/AntennasMan.m4 (renamed from graphics/circuit_macros/doc/Antennas.m4)0
-rw-r--r--graphics/circuit_macros/doc/Audio.tex295
-rw-r--r--graphics/circuit_macros/doc/AudioMan.m4 (renamed from graphics/circuit_macros/doc/Audio.m4)28
-rw-r--r--graphics/circuit_macros/doc/Bip.tex175
-rw-r--r--graphics/circuit_macros/doc/BipMan.m4 (renamed from graphics/circuit_macros/doc/Bip.m4)0
-rw-r--r--graphics/circuit_macros/doc/CctTable.tex858
-rw-r--r--graphics/circuit_macros/doc/CctTableMan.m4 (renamed from graphics/circuit_macros/doc/CctTable.m4)0
-rw-r--r--graphics/circuit_macros/doc/Circuit_macros.pdfbin629598 -> 1285894 bytes
-rw-r--r--graphics/circuit_macros/doc/Conn.tex178
-rw-r--r--graphics/circuit_macros/doc/ConnMan.m4 (renamed from graphics/circuit_macros/doc/Conn.m4)20
-rw-r--r--graphics/circuit_macros/doc/Contact.tex373
-rw-r--r--graphics/circuit_macros/doc/ContactMan.m4 (renamed from graphics/circuit_macros/doc/Contact.m4)0
-rw-r--r--graphics/circuit_macros/doc/Contacts.tex141
-rw-r--r--graphics/circuit_macros/doc/ContactsMan.m4 (renamed from graphics/circuit_macros/doc/Contacts.m4)0
-rw-r--r--graphics/circuit_macros/doc/Demultiplexer.tex148
-rw-r--r--graphics/circuit_macros/doc/DemultiplexerMan.m4 (renamed from graphics/circuit_macros/doc/Demultiplexer.m4)0
-rw-r--r--graphics/circuit_macros/doc/Diodes.tex383
-rw-r--r--graphics/circuit_macros/doc/DiodesMan.m4 (renamed from graphics/circuit_macros/doc/Diodes.m4)0
-rw-r--r--graphics/circuit_macros/doc/Emarrows.tex142
-rw-r--r--graphics/circuit_macros/doc/EmarrowsMan.m4 (renamed from graphics/circuit_macros/doc/Emarrows.m4)0
-rw-r--r--graphics/circuit_macros/doc/Fuses.tex174
-rw-r--r--graphics/circuit_macros/doc/FusesMan.m4 (renamed from graphics/circuit_macros/doc/Fuses.m4)17
-rw-r--r--graphics/circuit_macros/doc/Grounds.tex91
-rw-r--r--graphics/circuit_macros/doc/GroundsMan.m4 (renamed from graphics/circuit_macros/doc/Grounds.m4)19
-rw-r--r--graphics/circuit_macros/doc/Headers.tex214
-rw-r--r--graphics/circuit_macros/doc/HeadersMan.m4 (renamed from graphics/circuit_macros/doc/Headers.m4)6
-rw-r--r--graphics/circuit_macros/doc/Jack.tex327
-rw-r--r--graphics/circuit_macros/doc/JackMan.m4 (renamed from graphics/circuit_macros/doc/Jack.m4)0
-rw-r--r--graphics/circuit_macros/doc/Logic.tex212
-rw-r--r--graphics/circuit_macros/doc/LogicMan.m4 (renamed from graphics/circuit_macros/doc/Logic.m4)0
-rw-r--r--graphics/circuit_macros/doc/Makefile46
-rw-r--r--graphics/circuit_macros/doc/Multiplexer.tex148
-rw-r--r--graphics/circuit_macros/doc/MultiplexerMan.m4 (renamed from graphics/circuit_macros/doc/Multiplexer.m4)0
-rw-r--r--graphics/circuit_macros/doc/NLG.tex93
-rw-r--r--graphics/circuit_macros/doc/NLGMan.m4 (renamed from graphics/circuit_macros/doc/NLG.m4)0
-rw-r--r--graphics/circuit_macros/doc/NPDT.tex121
-rw-r--r--graphics/circuit_macros/doc/NPDTMan.m4 (renamed from graphics/circuit_macros/doc/NPDT.m4)0
-rw-r--r--graphics/circuit_macros/doc/Nport.tex116
-rw-r--r--graphics/circuit_macros/doc/NportMan.m4 (renamed from graphics/circuit_macros/doc/Nport.m4)0
-rw-r--r--graphics/circuit_macros/doc/OpampMan.m4 (renamed from graphics/circuit_macros/doc/Opamp.m4)0
-rw-r--r--graphics/circuit_macros/doc/Pconn.tex462
-rw-r--r--graphics/circuit_macros/doc/PconnMan.m4 (renamed from graphics/circuit_macros/doc/Pconn.m4)27
-rw-r--r--graphics/circuit_macros/doc/Relay.tex198
-rw-r--r--graphics/circuit_macros/doc/RelayMan.m4 (renamed from graphics/circuit_macros/doc/Relay.m4)0
-rw-r--r--graphics/circuit_macros/doc/ShiftR.tex285
-rw-r--r--graphics/circuit_macros/doc/ShiftRMan.m4 (renamed from graphics/circuit_macros/doc/ShiftR.m4)0
-rw-r--r--graphics/circuit_macros/doc/Sources.tex466
-rw-r--r--graphics/circuit_macros/doc/SourcesMan.m4 (renamed from graphics/circuit_macros/doc/Sources.m4)9
-rw-r--r--graphics/circuit_macros/doc/Switches.m4117
-rw-r--r--graphics/circuit_macros/doc/Switches.tex596
-rw-r--r--graphics/circuit_macros/doc/SwitchesMan.m4131
-rw-r--r--graphics/circuit_macros/doc/Tgate.tex117
-rw-r--r--graphics/circuit_macros/doc/TgateMan.m4 (renamed from graphics/circuit_macros/doc/Tgate.m4)0
-rw-r--r--graphics/circuit_macros/doc/Ttree.m456
-rw-r--r--graphics/circuit_macros/doc/Variable.tex306
-rw-r--r--graphics/circuit_macros/doc/VariableMan.m4 (renamed from graphics/circuit_macros/doc/Variable.m4)10
-rw-r--r--graphics/circuit_macros/doc/Version.tex2
-rw-r--r--graphics/circuit_macros/doc/WindingsMan.m4 (renamed from graphics/circuit_macros/doc/Windings.m4)0
-rw-r--r--graphics/circuit_macros/doc/Xform.tex648
-rw-r--r--graphics/circuit_macros/doc/XformMan.m4 (renamed from graphics/circuit_macros/doc/Xform.m4)0
-rw-r--r--graphics/circuit_macros/doc/bistableMan.m4 (renamed from graphics/circuit_macros/doc/bistable.m4)0
-rw-r--r--graphics/circuit_macros/doc/body.tex543
-rw-r--r--graphics/circuit_macros/doc/defines.tex85
-rw-r--r--graphics/circuit_macros/doc/fet.tex513
-rw-r--r--graphics/circuit_macros/doc/fetMan.m4 (renamed from graphics/circuit_macros/doc/fet.m4)0
-rw-r--r--graphics/circuit_macros/doc/relaycoilMan.m4 (renamed from graphics/circuit_macros/doc/relaycoil.m4)0
-rw-r--r--graphics/circuit_macros/doc/sampleIC.m416
-rw-r--r--graphics/circuit_macros/doc/thyristor.tex561
-rw-r--r--graphics/circuit_macros/doc/thyristorMan.m4 (renamed from graphics/circuit_macros/doc/thyristor.m4)0
-rw-r--r--graphics/circuit_macros/doc/ujt.tex81
-rw-r--r--graphics/circuit_macros/doc/ujtMan.m4 (renamed from graphics/circuit_macros/doc/ujt.m4)0
-rw-r--r--graphics/circuit_macros/dpictools.pic8
-rw-r--r--graphics/circuit_macros/examples/AntiqueClock.m413
-rw-r--r--graphics/circuit_macros/examples/Arrester.m428
-rw-r--r--graphics/circuit_macros/examples/Audio.m428
-rw-r--r--graphics/circuit_macros/examples/Conn.m420
-rw-r--r--graphics/circuit_macros/examples/Connectors.m424
-rw-r--r--graphics/circuit_macros/examples/Fuses.m417
-rw-r--r--graphics/circuit_macros/examples/Grounds.m419
-rw-r--r--graphics/circuit_macros/examples/Headers.m46
-rw-r--r--graphics/circuit_macros/examples/MC.m446
-rw-r--r--graphics/circuit_macros/examples/Makefile26
-rw-r--r--graphics/circuit_macros/examples/Pconn.m427
-rw-r--r--graphics/circuit_macros/examples/README-examples3
-rw-r--r--graphics/circuit_macros/examples/Rectifiers.m425
-rw-r--r--graphics/circuit_macros/examples/SampleFlow.m435
-rw-r--r--graphics/circuit_macros/examples/Sources.m49
-rw-r--r--graphics/circuit_macros/examples/Switches.m498
-rw-r--r--graphics/circuit_macros/examples/Tubediags.m44
-rw-r--r--graphics/circuit_macros/examples/Variable.m410
-rw-r--r--graphics/circuit_macros/examples/debug2.m46
-rw-r--r--graphics/circuit_macros/examples/examples.pdfbin879975 -> 893788 bytes
-rw-r--r--graphics/circuit_macros/examples/examples.tex21
-rw-r--r--graphics/circuit_macros/examples/files.tex10
-rw-r--r--graphics/circuit_macros/examples/ics.m4189
-rw-r--r--graphics/circuit_macros/examples/mf/cct.mf24
-rw-r--r--graphics/circuit_macros/examples/mpost/Makefile3
-rw-r--r--graphics/circuit_macros/examples/mpost/README-mpost2
-rw-r--r--graphics/circuit_macros/examples/mpost/examplesmpost.tex2
-rwxr-xr-xgraphics/circuit_macros/examples/mpost/mptest2
-rw-r--r--graphics/circuit_macros/examples/mpost/tstmpost.tex2
-rw-r--r--graphics/circuit_macros/examples/odistmakefile548
-rw-r--r--graphics/circuit_macros/examples/psfrag/Makefile4
-rw-r--r--graphics/circuit_macros/examples/psfrag/examplespsfrag.tex2
-rw-r--r--graphics/circuit_macros/examples/psfrag/tstpsfrag.tex2
-rw-r--r--graphics/circuit_macros/examples/svg/AntiqueClockSVG.m416
-rw-r--r--graphics/circuit_macros/examples/svg/AudioSVG.m430
-rw-r--r--graphics/circuit_macros/examples/svg/Banking.m459
-rw-r--r--graphics/circuit_macros/examples/svg/ButtonsSVG.m42
-rw-r--r--graphics/circuit_macros/examples/svg/ConnSVG.m416
-rw-r--r--graphics/circuit_macros/examples/svg/ConnectorsSVG.m430
-rw-r--r--graphics/circuit_macros/examples/svg/CsourceSVG.m42
-rw-r--r--graphics/circuit_macros/examples/svg/FontsSVG.m413
-rw-r--r--graphics/circuit_macros/examples/svg/FusesSVG.m412
-rw-r--r--graphics/circuit_macros/examples/svg/GroundsSVG.m418
-rw-r--r--graphics/circuit_macros/examples/svg/HeadersSVG.m46
-rw-r--r--graphics/circuit_macros/examples/svg/MCSVG.m453
-rw-r--r--graphics/circuit_macros/examples/svg/Makefile31
-rw-r--r--graphics/circuit_macros/examples/svg/MixerSVG.m42
-rw-r--r--graphics/circuit_macros/examples/svg/PconnSVG.m428
-rw-r--r--graphics/circuit_macros/examples/svg/RectifiersSVG.m419
-rw-r--r--graphics/circuit_macros/examples/svg/SVGconfig.m416
-rw-r--r--graphics/circuit_macros/examples/svg/ShiftRSVG.m44
-rw-r--r--graphics/circuit_macros/examples/svg/SourcesSVG.m47
-rw-r--r--graphics/circuit_macros/examples/svg/SwitchesSVG.m49
-rw-r--r--graphics/circuit_macros/examples/svg/TimerSVG.m42
-rw-r--r--graphics/circuit_macros/examples/svg/TubediagsSVG.m42
-rw-r--r--graphics/circuit_macros/examples/svg/VariableSVG.m433
-rw-r--r--graphics/circuit_macros/examples/svg/ex01SVG.m42
-rw-r--r--graphics/circuit_macros/examples/svg/ex09SVG.m444
-rw-r--r--graphics/circuit_macros/examples/svg/examplesSVG.htmx173
-rw-r--r--graphics/circuit_macros/examples/svg/graysurfSVG.m42
-rw-r--r--graphics/circuit_macros/examples/svg/icsSVG.m4189
-rw-r--r--graphics/circuit_macros/examples/svg/lcctSVG.m42
-rw-r--r--graphics/circuit_macros/examples/svg/paletteSVG.m42
-rw-r--r--graphics/circuit_macros/examples/svg/recycleSVG.m42
-rw-r--r--graphics/circuit_macros/examples/svg/tstSVG.htmx162
-rw-r--r--graphics/circuit_macros/examples/svg/windows.m412
-rw-r--r--graphics/circuit_macros/examples/windows.m47
-rw-r--r--graphics/circuit_macros/examples/xfig/xfiglib.fig6
-rw-r--r--graphics/circuit_macros/gpic.m42
-rw-r--r--graphics/circuit_macros/lib3D.m42
-rw-r--r--graphics/circuit_macros/libcct.m4283
-rw-r--r--graphics/circuit_macros/libgen.m423
-rw-r--r--graphics/circuit_macros/liblog.m453
-rw-r--r--graphics/circuit_macros/mfpic.m42
-rw-r--r--graphics/circuit_macros/mpost.m42
-rw-r--r--graphics/circuit_macros/pgf.m42
-rw-r--r--graphics/circuit_macros/postscript.m42
-rw-r--r--graphics/circuit_macros/psfrag.m42
-rw-r--r--graphics/circuit_macros/pstricks.m42
-rw-r--r--graphics/circuit_macros/svg.m497
-rw-r--r--graphics/circuit_macros/xfig.m42
-rw-r--r--graphics/pstricks/contrib/pst-ovl/Changes1
-rw-r--r--graphics/pstricks/contrib/pst-ovl/README6
-rw-r--r--graphics/pstricks/contrib/pst-ovl/doc/pst-ovl-doc.bib33
-rw-r--r--graphics/pstricks/contrib/pst-ovl/doc/pst-ovl-doc.pdfbin48866 -> 39774 bytes
-rw-r--r--graphics/pstricks/contrib/pst-ovl/doc/pst-ovl-doc.tex25
-rw-r--r--graphics/pstricks/contrib/pst-ovl/dvips/pst-ovl.pro2
-rw-r--r--graphics/pstricks/contrib/pst-ovl/latex/pst-ovl.sty8
-rw-r--r--graphics/pstricks/contrib/pst-ovl/tex/pst-ovl.tex8
168 files changed, 10825 insertions, 2064 deletions
diff --git a/graphics/circuit_macros/CHANGES b/graphics/circuit_macros/CHANGES
index 8713597bf9..5427774e17 100644
--- a/graphics/circuit_macros/CHANGES
+++ b/graphics/circuit_macros/CHANGES
@@ -1,5 +1,10 @@
CHANGES
+Version 9.2.x: New macro ACsymbol, Proxim, Magn, options for mosfet, ground,
+ microphone, consource. Bugfix for the source macro. Tweaked examples,
+ macro svg_font. Added a short discussion of integrated circuits
+ and connectors. Removed compression of the manual to restore broken
+ internal links.
Version 9.2: New options for macros contact, dswitch, FlipFlop,
FlipFlopX. New macros pvcell, contacts, relaycoil. Modified cbreaker
and relay. New file Licence.txt. Change from siunits to siunitx.sty.
@@ -10,12 +15,14 @@ Version 9.1: Corrected two examples; added others including vacuum tubes.
Version 9.0: Tweaked svg_sub, svg_sup, lamp. New macros cm__, px__.
New option for source. Obsolete Autologic and stackpromote_ removed.
Version 8.9: Tweaked lswitch, contact, rotbox, parallel_, darrow.
- Uniform open-arrowhead option for diode, thyristor. New macros reed, lamp.
+ Uniform open-arrowhead option for diode, thyristor. New macros reed,
+ lamp.
Version 8.8: Tweaks for source macro. Change to svg.m4 for
compatibility with dpic Version 2018.05.15 or later. Macros for
embedding pic diagrams into Tikz pictures. Changed the name of the
manual from CMman.pdf to Circuit_macros.pdf. Option for dswitch.
-Version 8.7: Fixes for more robust nested macros and SVG color. Options for
+Version 8.7: Fixes for more robust nested macros and SVG color. Options
+for
the source macro.
Version 8.6: Options for switch, lswitch. Simplified Quick Start section
of the manual. Added WARNING to m4 output for default configuration
@@ -33,21 +40,23 @@ Version 8.3: A simpler CTAN distribution and several examples reworked for
Version 8.2: Tweaks to round, bi_tr, bi_trans, Darlington, along_. New
Along_, lin_ang, mitre_.
Version 8.1: Additions to dpictools.pic. New macros parallel_, rgbstring,
- series_, stackdo_, Vsprod, sbs, scs, sus. Options for diode.
- Thyristor options and minor changes of functionality. Bugfix in winding macro.
-Version 8.0: New options for capacitor, cbreaker, diode, inductor, lswitch, Mux,
- resistor, rotbox, transformer. New macros addtaps, binary_, Demux, Header,
- HeaderPin, hex_digit, hexadecimal_, Pr_xy, Pr_xz, Pr_yz, SQUID, KelvinR,
- FTcap, tconn, and tapped.
- Tweaked setrgb for svg output. Generalized setview in lib3D.
+ series_, stackdo_, Vsprod, sbs, scs, sus. Options for diode. Thyristor
+ options and minor changes of functionality. Bugfix in winding macro.
+Version 8.0: New options for capacitor, cbreaker, diode, inductor,
+lswitch, Mux,
+ resistor, rotbox, transformer. New macros addtaps, binary_, Demux,
+ Header, HeaderPin, hex_digit, hexadecimal_, Pr_xy, Pr_xz, Pr_yz, SQUID,
+ KelvinR, FTcap, tconn, and tapped. Tweaked setrgb for svg output.
+ Generalized setview in lib3D.
Version 7.9: Added accessibility features to the documentation.
Replaced Autologic with Autologix to allow multiple outputs and
simplified expressions. New macros savem4dir, restorem4dir. Options for
vperp and Vperp. Bug fix in source macro. Tweaked stacksplit_. Removed
a name clash between libcct and liblog.
-Version 7.8: Logic gate options for arbitrary negated inputs; lg_pin options.
- New macro FlipFlopX for simplicity and generality; new macros Cintersect,
- LCintersect, LCtangent, stacksplit_; modified Loopover_.
+Version 7.8: Logic gate options for arbitrary negated inputs; lg_pin
+options.
+ New macro FlipFlopX for simplicity and generality; new macros
+ Cintersect, LCintersect, LCtangent, stacksplit_; modified Loopover_.
Version 7.7: SVG macro tweaks. Tweaked BOX_gate and bugfix in IOdefs in
liblog.m4.
Version 7.6: New macro NPDT; new option for contact and relay; Autologic
@@ -62,11 +71,13 @@ Version 7.5: Usage has been simplified by making the initialization macros
in composite macros. Bugfix in calls to BUFFER_gen. Tweaked Point_
for simpler output for common arguments. Reordered the arguments of
round for consistency.
-Version 7.4: New macro lthick. Simplified shadebox. The ifroff macro renamed
- to iftpic. New configuration file m4defaults.m4. Reworked darrow library
- for consistency with solid lines and arrows; new macro darc and wrappers
- Darc, Darrow, Dline; old version included in olddarrow.m4 to ease transition.
- Macros and examples fixed and made more robust for gpic (where possible).
+Version 7.4: New macro lthick. Simplified shadebox. The ifroff macro
+renamed
+ to iftpic. New configuration file m4defaults.m4. Reworked darrow
+ library for consistency with solid lines and arrows; new macro darc and
+ wrappers Darc, Darrow, Dline; old version included in olddarrow.m4 to
+ ease transition. Macros and examples fixed and made more robust for
+ gpic (where possible).
Version 7.3: Options for sinusoid. Bug fix for switch(,,D). Heater macro.
Modified Loopover_
Version 7.2: Tweaked crossover macro. Size options for inductor, resistor,
@@ -90,16 +101,16 @@ Version 6.6: New macros memristor, centerline. Revised PSTricks patch.
Options in mosfet, capacitor. Opamp .C defined. Tweaks to avoid
potential name conflicts. Fix for dashline.
Version 6.5: New macros Loopover_, m4xpand, showbox_, gyrator, norator,
- nullator, nterm, rotellipse, rotbox. Logic gate examples.
- Customization arguments for non-2-terminal elements. Signal
- flow-graph macros tuned to allow large nodes; bug fix in sfgarc. A
- patch for PSTricks to work around the context dependency of \psbezier
- within \pscustom.
+ nullator, nterm, rotellipse, rotbox. Logic gate examples. Customization
+ arguments for non-2-terminal elements. Signal flow-graph macros tuned
+ to allow large nodes; bug fix in sfgarc. A patch for PSTricks to work
+ around the context dependency of \psbezier within \pscustom.
Version 6.4: New macros Equidist3, f_box, rs_box, Darlington, View3D.
Options for diode, inductor, transformer, consource. Moved arrowhead
initialization in pstricks.m4 and libcct.m4 for for more flexibility
with diagrams embedded in latex files.
-Version 6.3: New options for mosfet, diode, earphone. Better color support.
+Version 6.3: New options for mosfet, diode, earphone. Better color
+support.
Fixed system-dependent OR_gate problems. New macro cintersect.
Version 6.2: Replaced scr with a variant of thyristor. Bug fix in
bi_trans. Options for source.
@@ -108,14 +119,18 @@ Version 6.1: New macros ttmotor, thyristor. Options for source, bi_trans,
Version 6.0: TikZ PGF compatibility. Added transformer labels, optional
FlipFlop labels. New macros dswitch, winding. Tweaked nport, source,
bi_trans, AND_gen, OR_gen, sinusoid, resistor.
-Version 5.9: Simplified internal flags for pic processor and postprocessor.
+Version 5.9: Simplified internal flags for pic processor and
+postprocessor.
New antenna, cbreaker, dturn, and lbox macros. Several changes to
allow sprintf string arguments. New options for buzzer, capacitor,
dimension_, ebox, fuse, mosfet, source, and switch. Fix of drjust.
- Better compatibility with pic macros. Numerous changes to documentation.
-Version 5.8: Simplified installation. Revised and augmented logic-gate library.
- Cleaner libgen macro output. Improved b_current, bi_trans, ground, dtee.
- Dline and darrow corrected for gpic. New macros dashline, m4xtract.
+ Better compatibility with pic macros. Numerous changes to
+ documentation.
+Version 5.8: Simplified installation. Revised and augmented logic-gate
+library.
+ Cleaner libgen macro output. Improved b_current, bi_trans, ground,
+ dtee. Dline and darrow corrected for gpic. New macros dashline,
+ m4xtract.
Version 5.7: Psfrag examples. Improved dline. Added option and label in
igbt. Bug fix in tr_xy. Multiple-emitter option in bi_trans.
Version 5.6: Better MetaPost, PDFLaTeX, and xfig support. PDF examples.
@@ -125,7 +140,8 @@ Version 5.6: Better MetaPost, PDFLaTeX, and xfig support. PDF examples.
microphone, buzzer. Negated logic gate inputs and IEEE box logic gates.
Version 5.5: New macros potentiometer, variable, igbt, tline. Optional
negated logic gate inputs. Options for diode, source.
-Version 5.4: New Mux, for_, arca. Reworked gate macros FlipFlop, AND_gate,
+Version 5.4: New Mux, for_, arca. Reworked gate macros FlipFlop,
+AND_gate,
OR_gate, NOT_gate. Improved lg_pintxt, boxdim, s_box, s_ht, s_wd,
s_dp, nport, resistor, opamp. Completely reworked bi_tr, mosfet;
deleted smosfet. Minor additions and changes to the manual.
@@ -133,52 +149,58 @@ Version 5.3: New macros arcr, arcd, beginshade, endshade, larrow, rarrow,
s_sp, s_ht, s_wd, Max, Min, sfgself. Improved ground, sfgnode, diode,
resistor.
Version 5.2: New macros arrowline, nport, vlength, boxcoord, reversed.
- Improved s_box, sfg_init, cross, fitcurve, sinusoid, transformer, darrow,
- mosfet, psset_, battery, diode, capacitor.
+ Improved s_box, sfg_init, cross, fitcurve, sinusoid, transformer,
+ darrow, mosfet, psset_, battery, diode, capacitor.
Version 5.1: Signal-flow graph (directed graph) macros. More consistent
rot3Dz. Work-around for a bug in some pic processors invoked by the
battery macro and for an arc instability invoked by the fuse macro.
Modified ground, dimension_, par_, label macros, b_current, diode,
- transformer. New macros gpar_, ujt, scr, contact, relay.
- Document fixes and additions. Changes to examples for portability.
-Version 5.0: Macros fuse, lpop, sinc; dpic-only sinusoid and fitcurve macros.
+ transformer. New macros gpar_, ujt, scr, contact, relay. Document
+ fixes and additions. Changes to examples for portability.
+Version 5.0: Macros fuse, lpop, sinc; dpic-only sinusoid and fitcurve
+macros.
More robust mosfet, smosfet, b_current, bi_tr, j_fet, intersect_.
Editorial changes to the manual. Examples in Xfig version 3.2 format.
Web-based examples and updated links.
-Version 4.9: More robust NOT_gate. Function pmod(), macro shade(). Tweaks
- to diode, dend, crossover. Newer manual and web references. Binary
- tree and flowchart macros.
+Version 4.9: More robust NOT_gate. Function pmod(), macro shade().
+Tweaks
+ to diode, dend, crossover. Newer manual and web references. Binary tree
+ and flowchart macros.
Version 4.8: More robust ebox, source, shadebox, gap. Modified d_fet and
- e_fet. Macros mosfet and smosfet. More examples in the manual. Bug
- fixes in Fector, transformer, BUFFER_gate and in sum_, abs_, neg_, sign_ (!).
-Version 4.7: Fixed the excess-space bug in boxdims.sty. Added Macros s_box,
- s_init, scale changes to make the package more metric-friendly. Reworked
- amp, integrator, opamp, diode, battery and a few other macros for robustness
- and clarity. Minor document changes.
+ e_fet. Macros mosfet and smosfet. More examples in the manual.
+ Bug fixes in Fector, transformer, BUFFER_gate and in sum_, abs_, neg_,
+ sign_ (!).
+Version 4.7: Fixed the excess-space bug in boxdims.sty. Added Macros
+s_box,
+ s_init, scale changes to make the package more metric-friendly.
+ Reworked amp, integrator, opamp, diode, battery and a few other macros
+ for robustness and clarity. Minor document changes.
Version 4.6: Percent-signs at the end of pstricks-generated lines.
Index in the manual. New copyright notices.
Version 4.5: Options for several 2-terminal macros. Minor bug fixes and
- better robustness. Documents edited for friendlier PC installation and use.
-Version 4.3: Macros pt__ and boxdim. Additions to the manual. More robust
+ better robustness. Documents edited for friendlier PC installation
+ and use.
+Version 4.3: Macros pt__ and boxdim. Additions to the manual.
+More robust
dimension_, tuned FlipFlop for xfig. PC installation information.
Version 4.2: Friendlier manual. New Xfig prototype file to allow correct
scaling. Cleaned up b_current, added line_leng. Changes and additions
to logic gates.
Version 4.1: Xfig prototype file included. Minor document changes. Fixed
- recursive call bug and blank line bug. Changed argument for dend
- macro. Better arrowheads in circuit elements.
+ recursive call bug and blank line bug. Changed argument for dend macro.
+ Better arrowheads in circuit elements.
Version 4: Simplified library use. Added capabilities and flexibility to
several devices, added _init macros, modified b_current. Updated
font.m4, cosmetic changes to inductor. Made gamp, amp, opamp,
- integrator more robust. Deleted edel_ macro. Fixed elen_ bug in
- darrow.m4. Removed Capacitor, Inductor and others in favour of
+ integrator more robust. Deleted edel_ macro. Fixed elen_ bug
+ in darrow.m4. Removed Capacitor, Inductor and others in favour of
parameterized macros. Iron-core inductors. Re-worked use of arcs in
basic elements for better robustness. Edited examples document and
the manual.
Version 3: Document changes, minor changes to dimension_, switch,
- ground, battery. Added flexibility for several elements. New
- diodes, Capacitor, transistors, hop, transformer. Experimental
- Metafont version of basic elements.
+ ground, battery. Added flexibility for several elements. New diodes,
+ Capacitor, transistors, hop, transformer. Experimental Metafont
+ version of basic elements.
Version 2.2: Replaced definitions of two-terminal elements
with current arrow by an arrow-labelling macro.
Version 2.1: one or two examples simplified, and logic gates added.
diff --git a/graphics/circuit_macros/Copying b/graphics/circuit_macros/Copying
index 4359dd7830..30acd259ab 100644
--- a/graphics/circuit_macros/Copying
+++ b/graphics/circuit_macros/Copying
@@ -1,4 +1,4 @@
-* Circuit_macros Version 9.2, copyright (c) 2020 J. D. Aplevich under *
+* Circuit_macros Version 9.3, copyright (c) 2020 J. D. Aplevich under *
* the LaTeX Project Public Licence in file Licence.txt. The files of *
* this distribution may be redistributed or modified provided that this *
* copyright notice is included and provided that modifications are clearly *
diff --git a/graphics/circuit_macros/INSTALL b/graphics/circuit_macros/INSTALL
new file mode 100644
index 0000000000..73ccc6bd3e
--- /dev/null
+++ b/graphics/circuit_macros/INSTALL
@@ -0,0 +1,76 @@
+INSTALLATION:
+ 1. Decide where you will be installing the .m4 library files. In
+ principle, they can go anywhere; for example, $HOME/texmf/Circuit_macros,
+ c:\localtexmf\Circuit_macros, /usr/local/share/Circuit_macros,
+ or ~/texmf/tex/latex/Circuit_macros. Copy the files from the
+ top-level directory of the distribution to the installation
+ directory, or simply expand the .tar.gz or .zip distribution file
+ and rename the result to create the installation directory, which
+ will then include the doc and examples subdirectories.
+
+ 2. Copy boxdims.sty (see Section 9 of the manual) from the top
+ distribution directory to where LaTeX will find it; directory
+ ~/texmf/tex/latex/boxdims for example, and refresh the LaTeX
+ filename database (the exact command depends on your LaTeX
+ distribution and may not be necessary).
+
+ 3. Define the environment variable M4PATH to point to the installation
+ directory determined in Step 1. For the bash shell, for
+ example, add the following to your .bashrc file:
+ export M4PATH='.:~/texmf/tex/latex/Circuit_macros:'
+ but modify the path to the installation directory as necessary.
+
+ 4. This is optional. For historical reasons, the default configuration file
+ as distributed is gpic.m4. You can change it to pgf.m4 or pstricks.m4
+ for use with dpic by editing the include command near the top of
+ libgen.m4. To do this automatically, go to the installation directory
+ and type
+ "make pgfdefault" to set the default processor to dpic with Tikz pgf
+ "make psdefault" to set the default processor to dpic with PSTricks
+ "make gpicdefault" to restore gpic as the default.
+
+ You might develop your own set of macros that are combinations
+ or variations of those provided here. You can put them in a file,
+ mymacros.m4 say, and copy it to the installation directory. Then the
+ line include(mymacros.m4) in a diagram source will you make your
+ macros available.
+
+ In case of difficulty, go to the examples directory, look at debug1.tex
+ and debug2.m4, and follow instructions.
+
+TESTING:
+ To test your installation, go to the examples directory (or copy the
+ files Makefile, tst.tex, and any .m4 sources you might like to test
+ to a working directory) and create a test circuit in the
+ file test.m4. Copy ex01.m4, for example, or quick.m4 from the doc
+ directory into test.m4.
+
+ On a system with a "make" facility, first check the definitions at
+ the top of the Makefile, and then type "make tst1" to produce the
+ file tst.ps. If the source requires processing twice, type "make
+ tst" instead. To process one of the example .m4 files in the
+ examples directory, simply type "make name.ps" to process name.m4.
+ If these tests work to your satisfaction, try typing simply "make" to
+ produce examples.ps. To test .pdf files, go to the pgf directory,
+ copy name.m4 there, and type either "make name.ps" or "make name.pdf"
+ to test the file under pdflatex and TikZ PGF.
+
+ The .m4 files in the examples directory can serve as models for your
+ diagrams but keep in mind that some of them contain details that allow
+ the source to be used with a variety of postprocessors. Sticking to one
+ postprocessor such as tikz or PStricks allows for the simplest source.
+ You might also wish to browse some of the included files that are not
+ used to make examples.ps.
+
+ A few of the sources in the examples directory are copies of files
+ from the doc directory. They are duplicated to provide flexibility
+ of directory structure and independency of sources.
+
+ No "make" facility? You have to test by hand (but see below for
+ diagram production software). Copy a test file as above into
+ test.m4. Assuming you have dpic installed, type the following:
+
+ m4 -I <path> pstricks.m4 test.m4 > test.pic
+ dpic -p test.pic > test.tex
+ latex tst
+ dvips tst -o tst.ps
diff --git a/graphics/circuit_macros/README b/graphics/circuit_macros/README
index 3d31e4eb61..982ea2a097 100644
--- a/graphics/circuit_macros/README
+++ b/graphics/circuit_macros/README
@@ -1,5 +1,5 @@
-* Circuit_macros Version 9.2, copyright (c) 2020 J. D. Aplevich under *
+* Circuit_macros Version 9.3, copyright (c) 2020 J. D. Aplevich under *
* the LaTeX Project Public Licence in file Licence.txt. The files of *
* this distribution may be redistributed or modified provided that this *
* copyright notice is included and provided that modifications are clearly *
@@ -13,9 +13,9 @@
included with several tools and examples of other types of diagrams.
Elements can be scaled or drawn in any orientation and are easy
to modify. The advantages and disadvantages of such a system in its
- basic form are similar to those of TeX itself, which is macro-based and
- non-WYSIWYG; however, graphical interfaces are available for specific
- operating systems as mentioned below.
+ basic form are similar to those of TeX itself, which is macro-based
+ and non-WYSIWYG. Graphical interfaces are available for specific
+ operating systems.
The macros are to be processed by an m4 macro processor, and evaluate to
drawing commands in the pic "little language," which is easy to read and
@@ -100,11 +100,7 @@ USAGE
\usepackage{pstricks}, pstricks.m4 is read instead of pgf.m4, and the dpic
option is -p, so the command is
- m4 pstricks.m4 cct.m4 | dpic -p > cct.tex
-
- or, if include(pstricks.m4) is the first line of cct.m4,
-
- m4 cct.m4 | dpic -p > cct.tex
+ m4 pstricks.m4 cct.m4 | dpic -p > cct.tex or m4 cct.m4 | dpic -p > cct.tex
Read Section 2 of the manual to see how to process the diagram source
from within the main .tex source file.
@@ -114,99 +110,16 @@ USAGE
m4 gpic.m4 cct.m4 | gpic -t > cct.tex
- with the -I <path> option added if M4PATH has not been defined.
-
-INSTALLATION:
- 1. Decide where you will be installing the .m4 library files. In
- principle, they can go anywhere; for example, $HOME/Circuit_macros,
- c:\localtexmf\Circuit_macros, /usr/local/share/Circuit_macros,
- or ~/texmf/tex/latex/Circuit_macros. Copy the files from the
- top-level directory of the distribution to the installation
- directory, or simply expand the .tar.gz or .zip distribution file
- and rename the result to create the installation directory, which
- will then include the doc and examples subdirectories.
-
- 2. Copy boxdims.sty (see Section 9 of the manual) from the top
- distribution directory to where LaTeX will find it; directory
- ~/texmf/tex/latex/boxdims for example, and refresh the LaTeX
- filename database (the exact command depends on your LaTeX
- distribution and may not be necessary).
-
- 3. Define the environment variable M4PATH to point to the installation
- directory determined in Step 1. For the bash shell, for
- example, add the following to your .bashrc file:
- export M4PATH='.:~/texmf/tex/latex/Circuit_macros:'
- but modify the path to the installation directory as necessary.
-
- 4. This is optional. For historical reasons, the default configuration file
- as distributed is gpic.m4. You can change it to pgf.m4 or pstricks.m4
- for use with dpic by editing the include command near the top of
- libgen.m4. To do this automatically, go to the installation directory
- and type
- "make pgfdefault" to set the default processor to dpic with Tikz pgf
- "make psdefault" to set the default processor to dpic with PSTricks
- "make gpicdefault" to restore gpic as the default.
-
- In case of difficulty, go to the examples directory, look at debug1.tex
- and debug2.m4, and follow instructions.
-
-WORKFLOW: The basic commands given above suffice for documents of moderate
- size and complexity; otherwise, a "make" facility or equivalent should be
- used or, for modest documents, diagram processing can be controlled from
- within the tex document source as described in the manual. For near-immediate
- viewing, three windows can be kept open: one in which to edit the source, one
- to process the source and produce postscript or pdf, and GSview 5.0, which
- updates when clicked. The Okular viewer also re-loads automatically.
-
- Special-purpose editors and GUI-based project tools such as TeXnicCenter
- can also be employed, or a scripting language can automate the steps as
- done by Latexmk or several other similar tools; see, for example,
- http://tex.stackexchange.com/questions/64/tools-for-automating-document-compilation
+ The basic commands given above suffice for documents of moderate
+ size and complexity; otherwise, a "make" facility or equivalent should
+ be used or, for modest documents, diagram processing can be controlled
+ from within the tex document source as described in the manual. For
+ near-immediate viewing of the basic process, three windows can be kept
+ open: one in which to edit the source, one to process the source and
+ produce postscript or pdf, and Okular or GSview 5.0, which updates
+ when clicked.
- NOTE: One of the configuration files (gpic.m4, pstricks.m4, pgf.m4,
- pdf.m4, postscript.m4, psfrag.m4, mpost.m4, mfpic.m4, svg.m4, or
- xfig.m4) must be read by m4 before (or at the beginning of) the diagram
- source file, depending on the required form of pic output. Otherwise,
- libgen.m4 can be read first but it will invoke the default configuration
- file, which is gpic.m4 in the distribution unless it has been changed
- during installation.
-
-TESTING:
- To test your installation, go to the examples directory (or copy the
- files Makefile, tst.tex, and any .m4 sources you might like to test
- to a working directory) and create a test circuit in the
- file test.m4. Copy ex01.m4, for example, or quick.m4 from the doc
- directory into test.m4.
-
- On a system with a "make" facility, first check the definitions at
- the top of the Makefile, and then type "make tst1" to produce the
- file tst.ps. If the source requires processing twice, type "make
- tst" instead. To process one of the example .m4 files in the
- examples directory, simply type "make name.ps" to process name.m4.
- If these tests work to your satisfaction, try typing simply "make" to
- produce examples.ps. To test .pdf files, go to the pgf directory,
- copy name.m4 there, and type either "make name.ps" or "make name.pdf"
- to test the file under pdflatex and TikZ PGF.
-
- The .m4 files in the examples directory can serve as models for your
- diagrams but keep in mind that some of them contain details that allow
- the source to be used with a variety of postprocessors. Sticking to one
- postprocessor such as tikz or PStricks allows for the simplest source.
- You might also wish to browse some of the included files that are not
- used to make examples.ps.
-
- A few of the sources in the examples directory are copies of files
- from the doc directory. They are duplicated to provide flexibility
- of directory structure and independency of sources.
-
- No "make" facility? You have to test by hand (but see below for
- diagram production software). Copy a test file as above into
- test.m4. Assuming you have dpic installed, type the following:
-
- m4 -I <path> pstricks.m4 test.m4 > test.pic
- dpic -p test.pic > test.tex
- latex tst
- dvips tst -o tst.ps
+INSTALLATION AND TESTING: See the INSTALL file.
SOURCES AND MANUALS:
View or print Circuit_macros.pdf in the doc directory.
@@ -223,7 +136,6 @@ SOURCES AND MANUALS:
http://gnuwin32.sourceforge.net/packages/m4.htm (m4 for Windows)
http://www.gnu.org/software/m4/manual/ (GNU m4 manual)
https://mbreen.com/m4.html (m4 by example)
- https://www.seindal.dk/rene/gnu/ (development site)
The m4 (computer language) article in Wikipedia gives a concise overview.
An academic discussion of the language can be found in
http://www.cs.stir.ac.uk/~kjt/research/pdf/expl-m4.pdf.
@@ -232,10 +144,6 @@ SOURCES AND MANUALS:
(Do not read this manual first). Autoconf uses quote characters [ and ]
instead of the default ` and ' which work well with the pic language.
- A video "Drawing Circuit Diagrams with Circuits Macros" by James Green
- showing how to use Circuit_macros with his setup is at
- https://www.youtube.com/watch?time_continue=53&v=pFRIBvUJHS4
-
Gpic is part of the GNU groff distribution, for which the source
and documentation is available from http://ftp.gnu.org/gnu/groff/
but there are mirror sites as well. The original AT&T pic manual
@@ -259,15 +167,14 @@ DPIC:
The best advice is to obtain the newest version.
The dpic distribution includes a manual dpic-doc.pdf containing a summary
- of the pic language and descriptions of features unique to dpic.
+ of the pic language and of features unique to dpic.
-EXAMPLES AND INTEGRATION WITH OTHER TOOLS:
+EXAMPLES
A set of examples is included in this distribution, showing electric
- circuits, block diagrams, flow charts, signal-flow graphs, basic use
- of colour and fill, and other applications.
-
- Read the manual Circuit_macros.pdf and view or print the file
- examples.ps in the examples directory. There are a few other source
+ circuits, block diagrams, flow charts, signal-flow graphs, basic
+ use of colour and fill, and other applications. Read the manual
+ Circuit_macros.pdf and view or print the file examples.pdf in the
+ examples directory. For the curious, There are additional source
files in the examples directory that are not shown in examples.pdf.
For the possibly unstable development version of these macros, try
http://ece.uwaterloo.ca/~aplevich/Circuit_macros/
@@ -277,48 +184,71 @@ EXAMPLES AND INTEGRATION WITH OTHER TOOLS:
examples directory are for testing metafont, metapost, pgf, psfrag,
pdf, and xfig examples.
- Installation and usage of the macros have evolved a little since the
- beginning so archived instructions on the net may be slightly more
- complicated than currently necessary. However, a number of people
- have developed tools that simplify workflow for their circumstances,
- which are beyond the scope of this distribution.
+INTEGRATION WITH OTHER TOOLS:
+ Installation and usage of the macros have evolved smewhat since the
+ beginning, so archived instructions on the net may be slightly more
+ complicated than currently necessary. Because I was producing books,
+ I simply added commands to the appropriate Makefiles. However, others
+ have developed tools that simplify workflow for their circumstances.
+ The following are representative but keep in mind that systems and
+ installations evolve ovr time:
+
+ A Python-based GUI called PyCirkuit is
+ at https://pypi.org/project/pycirkuit/ and
+ https://github.com/orestesmas/pycirkuit. For an
+ introduction, look at the FOSDEM video by Orestes Mas:
+ https://ftp.osuosl.org/pub/fosdem/2020/H.2215/pycirkuit.webm
+
+ A python build-automation tool, m4cm, by Peter Jan Randewijk is at
+ https://m4cmpy.wordpress.com/
+ with very clear instructions about getting started with Circuit_macros at
+ https://m4cmpy.wordpress.com/2020/02/23/getting-started-with-m4-circuit-macros/
+
+ Fabrice Salvaire has a blog and a useful bash script at
+ https://www.fabrice-salvaire.fr/en/blog/electronic-circuit-diagrams/
A set of examples and hints intended for his colleagues has been
produced by Alan Robert Clark at http://ytdp.ee.wits.ac.za/cct.html
- A Python-based GUI called PyCirkuit is at
- https://pypi.org/project/pycirkuit/ and
- https://github.com/orestesmas/pycirkuit.
- For an introduction, look at the FOSDEM video by Orestes Mas:
- https://ftp.osuosl.org/pub/fosdem/2020/H.2215/pycirkuit.webm
+ A video "Drawing Circuit Diagrams with Circuits Macros" by James Green
+ showing how to use Circuit_macros with his setup is at
+ https://www.youtube.com/watch?time_continue=53&v=pFRIBvUJHS4
- A KDE interface created by Matteo Agostinelli can be found at
- http://wwwu.uni-klu.ac.at/magostin/cirkuit.html. A git repository
- of a newer version of cirkuit by Andrew G. for Linux is at
- https://github.com/ag-ckt/cirkuit/tree/V0.5.0. Because of changes
- in library dependencies, there is uncertainty about installation
- possibilities.
+ A KDE interface created by Matteo Agostinelli can be found
+ at http://wwwu.uni-klu.ac.at/magostin/cirkuit.html. A git
+ repository of a newer version of cirkuit by Andrew G. for Linux
+ is at https://github.com/ag-ckt/cirkuit/tree/V0.5.0. There is
+ uncertainty about installation possibilities because of changes in
+ library dependencies.
A wiki offering examples and tips is at
http://swwiki.e-dschungel.de/circuit_macros
It is in German but Google translate works well on the page.
- Variations:
- See eschpic on Github for IEC-style electrical drawings.
+ LaTeX automation tools are discussed at, for example,
+ http://tex.stackexchange.com/questions/64/tools-for-automating-document-compilation
Mac users:
A previewer app for Mac OS X written by Collin J. Delker is available at
http://www.collindelker.com/wp/2013/04/circuit_macros_previewer/
- For an example of the use of dpic in a wiki (thanks to Jason Grout), see
- http://jasongrout.org/software/dokuwiki/format-plugin
-
A Windows batch file for Circuit_macros is found at
http://someonehasdonethis.blogspot.ca/2012/12/a-solution-for-drawing-circuit-diagrams.html
- The examples in the current distribution include some flowchart elements
- in Flow.m4. For a pic-only version that does not require m4, look at
- http://web.ing.puc.cl/~mtorrest/downloads.htm#TeX
+VARIATIONS
+ Macros such as these inevitably will be modified to suit individual
+ needs and taste. They continue to evolve in my own library as I use
+ them and as others send comments. No such collection can hope to
+ include all possible circuit-related symbols, so you will probably
+ find yourself writing your own macros or adapting some of these. Be
+ careful to rename modified macros to avoid confusion. The learning
+ curve compares well to other packages, but there is no trivially easy
+ way to produce high-quality graphics.
+
+ See eschpic on Github for IEC-style electrical drawings.
+
+ For an example of the use of dpic in a wiki (thanks to Jason Grout), see
+ http://jasongrout.org/software/dokuwiki/format-plugin
Pic dates from the 1980s and was first developed as a preprocessor for
the *roff family of Unix word processors. Some additional libraries such
@@ -329,10 +259,11 @@ EXAMPLES AND INTEGRATION WITH OTHER TOOLS:
http://www.math.uiuc.edu/~west/gpic.html
After minor adaptation to dpic syntax, many of them can be simplified.
- A collection of pic resources and related material is available at
- http://www.kohala.com/start/troff/troff.html In particular, W. Richard
- Stevens illustrated his books on Unix and TCP/IP using pic macros. Some
- of the sources found there need minor tuning to work under dpic.
+ A collection of traditional pic resources and related material is
+ available at http://www.kohala.com/start/troff/troff.html In particular,
+ W. Richard Stevens illustrated his books on Unix and TCP/IP using
+ pic macros. Some of the sources found there need minor tuning to work
+ under dpic.
MetaPost examples: Go to the examples/mpost directory. Check the
Makefile as described in the README file, type "make", and stand well back.
@@ -398,16 +329,6 @@ LIBRARIES:
for drawing double-line arrows are in darrow.m4. The file dpictools.pic
contains pic macros and is read automatically by some of the examples.
-MODIFICATIONS:
- Macros such as these inevitably will be modified to suit individual
- needs and taste. They continue to evolve in my own library as I use
- them and as others send comments. No such collection can hope to
- include all possible circuit-related symbols, so you will probably
- find yourself writing your own macros or adapting some of these. Be
- careful to rename modified macros to avoid confusion. The learning
- curve compares well to other packages, but there is no trivially easy
- way to produce high-quality graphics.
-
Feel free to contact me with comments or questions. I have retired
from full-time work but continue the hobby of maintaining these files.
I may now be able to spend more time on individual requests but I may
diff --git a/graphics/circuit_macros/darrow.m4 b/graphics/circuit_macros/darrow.m4
index 590760c081..c2742857af 100644
--- a/graphics/circuit_macros/darrow.m4
+++ b/graphics/circuit_macros/darrow.m4
@@ -1,7 +1,7 @@
divert(-1)
darrow.m4 Macros for double lines and arrows
-* Circuit_macros Version 9.2, copyright (c) 2020 J. D. Aplevich under *
+* Circuit_macros Version 9.3, copyright (c) 2020 J. D. Aplevich under *
* the LaTeX Project Public Licence in file Licence.txt. The files of *
* this distribution may be redistributed or modified provided that this *
* copyright notice is included and provided that modifications are clearly *
diff --git a/graphics/circuit_macros/doc/AmpTable.tex b/graphics/circuit_macros/doc/AmpTable.tex
new file mode 100644
index 0000000000..79bbf3bb66
--- /dev/null
+++ b/graphics/circuit_macros/doc/AmpTable.tex
@@ -0,0 +1,73 @@
+\begin{tikzpicture}[scale=2.54]
+% dpic version 2020.03.01 option -g for TikZ and PGF 1.01
+\ifx\dpiclw\undefined\newdimen\dpiclw\fi
+\global\def\dpicdraw{\draw[line width=\dpiclw]}
+\global\def\dpicstop{;}
+\dpiclw=0.8bp
+\dpiclw=0.8bp
+\dpicdraw (0,0)
+ --(0.125,0)\dpicstop
+\dpicdraw (0.625,0)
+ --(0.125,0.25)
+ --(0.125,-0.25)
+ --(0.625,0)
+ --(0.75,0)\dpicstop
+\draw (0.777674,0) node[right=-2bp]{{\tt amp}};
+\dpicdraw (0,-0.4)
+ --(0.225,-0.4)\dpicstop
+\dpicdraw (0.525,-0.4)
+ --(0.225,-0.25)
+ --(0.225,-0.55)
+ --(0.525,-0.4)
+ --(0.75,-0.4)\dpicstop
+\draw (0.777674,-0.4) node[right=-2bp]{{\tt amp(,0.3)}};
+\dpicdraw (2,0)
+ --(2.229167,0)\dpicstop
+\dpicdraw (2.345833,-0.175)
+ --(2.229167,-0.175)
+ --(2.229167,0.175)
+ --(2.345833,0.175)\dpicstop
+\dpicdraw (2.345833,0.175)
+ ..controls (2.442483,0.175) and (2.520833,0.09665)
+ ..(2.520833,0)
+ ..controls (2.520833,-0.09665) and (2.442483,-0.175)
+ ..(2.345833,-0.175)\dpicstop
+\dpicdraw (2.520833,0)
+ --(2.75,0)\dpicstop
+\draw (2.777674,0) node[right=-2bp]{{\tt delay}};
+\dpicdraw (2,-0.4)
+ --(2.291667,-0.4)\dpicstop
+\dpicdraw (2.358333,-0.5)
+ --(2.291667,-0.5)
+ --(2.291667,-0.3)
+ --(2.358333,-0.3)\dpicstop
+\dpicdraw (2.358333,-0.3)
+ ..controls (2.413562,-0.3) and (2.458333,-0.344772)
+ ..(2.458333,-0.4)
+ ..controls (2.458333,-0.455228) and (2.413562,-0.5)
+ ..(2.358333,-0.5)\dpicstop
+\dpicdraw (2.458333,-0.4)
+ --(2.75,-0.4)\dpicstop
+\draw (2.777674,-0.4) node[right=-2bp]{{\tt delay(,0.2)}};
+\dpicdraw (4.125,0.25)
+ --(4,0.25)
+ --(4,-0.25)
+ --(4.125,-0.25)\dpicstop
+\dpicdraw (4.625,0)
+ --(4.125,0.25)
+ --(4.125,-0.25)
+ --(4.625,0)
+ --(4.75,0)\dpicstop
+\draw (4.777674,0) node[right=-2bp]{{\tt integrator}};
+\dpicdraw (4.075,-0.35)
+ --(4,-0.35)
+ --(4,-0.65)
+ --(4.075,-0.65)\dpicstop
+\dpicdraw (4.375,-0.5)
+ --(4.075,-0.35)
+ --(4.075,-0.65)
+ --(4.375,-0.5)
+ --(4.75,-0.5)\dpicstop
+\draw (4.777674,-0.5) node[right=-2bp]{{\tt integrator(,0.3)}};
+\end{tikzpicture}
+\vspace*{-0.5\baselineskip}
diff --git a/graphics/circuit_macros/doc/AmpTable.m4 b/graphics/circuit_macros/doc/AmpTableMan.m4
index c94f682cbc..c94f682cbc 100644
--- a/graphics/circuit_macros/doc/AmpTable.m4
+++ b/graphics/circuit_macros/doc/AmpTableMan.m4
diff --git a/graphics/circuit_macros/doc/Antennas.m4 b/graphics/circuit_macros/doc/AntennasMan.m4
index 6053cd2e3f..6053cd2e3f 100644
--- a/graphics/circuit_macros/doc/Antennas.m4
+++ b/graphics/circuit_macros/doc/AntennasMan.m4
diff --git a/graphics/circuit_macros/doc/Audio.tex b/graphics/circuit_macros/doc/Audio.tex
new file mode 100644
index 0000000000..9531f8b0dc
--- /dev/null
+++ b/graphics/circuit_macros/doc/Audio.tex
@@ -0,0 +1,295 @@
+\begin{tikzpicture}[scale=2.54]
+% dpic version 2020.03.01 option -g for TikZ and PGF 1.01
+\ifx\dpiclw\undefined\newdimen\dpiclw\fi
+\global\def\dpicdraw{\draw[line width=\dpiclw]}
+\global\def\dpicstop{;}
+\dpiclw=0.8bp
+\dpiclw=0.8bp
+\dpicdraw (0.61348,0.294444)
+ --(0.849182,0.461111)
+ --(0.849182,-0.205556)
+ --(0.61348,-0.038889)\dpicstop
+\dpicdraw (0.61348,0.127778)
+ --(0.61348,0.294444)
+ --(0.377778,0.294444)
+ --(0.377778,-0.038889)
+ --(0.61348,-0.038889)
+ --(0.61348,0.127778)\dpicstop
+\draw (0.61348,-0.405556) node{\tt speaker};
+\dpiclw=0.4bp
+\filldraw[line width=0bp](0.308208,0.213219)
+ --(0.377778,0.211111)
+ --(0.320857,0.251167) --cycle\dpicstop
+\dpicdraw (0.359436,0.217225)
+ --(0.227778,0.261111)\dpicstop
+\draw (0.227778,0.261111) node[above left=-2bp]{{\sl In1}};
+\filldraw[line width=0bp](0.311111,0.107778)
+ --(0.377778,0.127778)
+ --(0.311111,0.147778) --cycle\dpicstop
+\dpicdraw (0.358444,0.127778)
+ --(0.227778,0.127778)\dpicstop
+\draw (0.227778,0.127778) node[left=-2bp]{{\sl In2}};
+\filldraw[line width=0bp](0.320857,0.004389)
+ --(0.377778,0.044444)
+ --(0.308208,0.042336) --cycle\dpicstop
+\dpicdraw (0.359436,0.038331)
+ --(0.227778,-0.005556)\dpicstop
+\draw (0.227778,-0.005556) node[below left=-2bp]{{\sl In3}};
+\dpiclw=0.8bp
+\dpiclw=0.4bp
+\filldraw[line width=0bp](0.396648,0.351365)
+ --(0.436703,0.294444)
+ --(0.434595,0.364015) --cycle\dpicstop
+\dpicdraw (0.430589,0.312786)
+ --(0.386703,0.444444)\dpicstop
+\draw (0.386703,0.444444) node[above left=-2bp]{{\sl In4}};
+\filldraw[line width=0bp](0.556663,0.364015)
+ --(0.554554,0.294444)
+ --(0.59461,0.351365) --cycle\dpicstop
+\dpicdraw (0.560668,0.312786)
+ --(0.604554,0.444444)\dpicstop
+\draw (0.604554,0.444444) node[above=-2bp]{{\sl In5}};
+\filldraw[line width=0bp](0.434595,-0.108459)
+ --(0.436703,-0.038889)
+ --(0.396648,-0.09581) --cycle\dpicstop
+\dpicdraw (0.430589,-0.057231)
+ --(0.386703,-0.188889)\dpicstop
+\draw (0.386703,-0.188889) node[below left=-2bp]{{\sl In6}};
+\filldraw[line width=0bp](0.59461,-0.09581)
+ --(0.554554,-0.038889)
+ --(0.556663,-0.108459) --cycle\dpicstop
+\dpicdraw (0.560668,-0.057231)
+ --(0.604554,-0.188889)\dpicstop
+\draw (0.604554,-0.188889) node[below=-2bp]{{\sl In7}};
+\filldraw[line width=0bp](0.66905,0.219687)
+ --(0.61348,0.177778)
+ --(0.682943,0.182177) --cycle\dpicstop
+\dpicdraw (0.63161,0.184493)
+ --(0.757545,0.231135)
+ ..controls (0.841502,0.26223) and (0.900147,0.311111)
+ ..(0.93348,0.377778)
+ --(0.98348,0.477778)\dpicstop
+\draw (0.98348,0.477778) node[above=-2bp]{\sl Box};
+\dpiclw=0.8bp
+\dpicdraw (1.469182,0.044444)
+ --(1.587033,0.106944)
+ --(1.587033,-0.184722)
+ --(1.469182,-0.122222)\dpicstop
+\dpicdraw (1.469182,-0.038889)
+ --(1.469182,0.127778)
+ --(1.23348,0.127778)
+ --(1.23348,-0.205556)
+ --(1.469182,-0.205556)
+ --(1.469182,-0.038889)\dpicstop
+\draw (1.410257,-0.505556) node{\tt speaker(,{,}H)};
+\dpicdraw (2.214811,0.511111)
+ --(2.214811,0.636111)
+ --(1.964811,0.636111)
+ --(1.964811,0.386111)
+ --(2.214811,0.386111)
+ --(2.214811,0.511111)\dpicstop
+\dpicdraw (2.339811,0.511111) circle (0.049213in)\dpicstop
+\draw (2.214811,0.186111) node{\tt bell};
+\dpiclw=0.4bp
+\filldraw[line width=0bp](1.895241,0.575719)
+ --(1.964811,0.573611)
+ --(1.90789,0.613667) --cycle\dpicstop
+\dpicdraw (1.946469,0.579725)
+ --(1.814811,0.623611)\dpicstop
+\draw (1.814811,0.623611) node[above left=-2bp]{{\sl In1}};
+\filldraw[line width=0bp](1.898145,0.491111)
+ --(1.964811,0.511111)
+ --(1.898145,0.531111) --cycle\dpicstop
+\dpicdraw (1.945477,0.511111)
+ --(1.814811,0.511111)\dpicstop
+\draw (1.814811,0.511111) node[left=-2bp]{{\sl In2}};
+\filldraw[line width=0bp](1.90789,0.408556)
+ --(1.964811,0.448611)
+ --(1.895241,0.446503) --cycle\dpicstop
+\dpicdraw (1.946469,0.442497)
+ --(1.814811,0.398611)\dpicstop
+\draw (1.814811,0.398611) node[below left=-2bp]{{\sl In3}};
+\dpiclw=0.8bp
+\dpiclw=0.4bp
+\filldraw[line width=0bp](1.93619,0.680487)
+ --(1.989811,0.636111)
+ --(1.969472,0.702675) --cycle\dpicstop
+\dpicdraw (1.979087,0.652198)
+ --(1.889811,0.786111)\dpicstop
+\draw (1.889811,0.786111) node[above=-2bp]{\sl Box};
+\filldraw[line width=0bp](2.319811,0.702778)
+ --(2.339811,0.636111)
+ --(2.359811,0.702778) --cycle\dpicstop
+\dpicdraw (2.339811,0.655445)
+ --(2.339811,0.786111)\dpicstop
+\draw (2.339811,0.786111) node[above=-2bp]{\sl Circle};
+\dpiclw=0.8bp
+\dpicdraw (3.492589,0.386111)
+ --(3.492589,0.636111)\dpicstop
+\dpicdraw (3.367589,0.511111) circle (0.049213in)\dpicstop
+\draw (3.367589,0.186111) node{\tt microphone};
+\dpiclw=0.4bp
+\filldraw[line width=0bp](3.189766,0.575719)
+ --(3.259336,0.573611)
+ --(3.202415,0.613667) --cycle\dpicstop
+\dpicdraw (3.240994,0.579725)
+ --(3.109336,0.623611)\dpicstop
+\draw (3.109336,0.623611) node[above left=-2bp]{{\sl In1}};
+\filldraw[line width=0bp](3.175922,0.491111)
+ --(3.242589,0.511111)
+ --(3.175922,0.531111) --cycle\dpicstop
+\dpicdraw (3.223255,0.511111)
+ --(3.092589,0.511111)\dpicstop
+\draw (3.092589,0.511111) node[left=-2bp]{{\sl In2}};
+\filldraw[line width=0bp](3.202415,0.408556)
+ --(3.259336,0.448611)
+ --(3.189766,0.446503) --cycle\dpicstop
+\dpicdraw (3.240994,0.442497)
+ --(3.109336,0.398611)\dpicstop
+\draw (3.109336,0.398611) node[below left=-2bp]{{\sl In3}};
+\dpiclw=0.8bp
+\dpiclw=0.4bp
+\filldraw[line width=0bp](3.347589,0.702778)
+ --(3.367589,0.636111)
+ --(3.387589,0.702778) --cycle\dpicstop
+\dpicdraw (3.367589,0.655445)
+ --(3.367589,0.786111)\dpicstop
+\draw (3.367589,0.786111) node[above=-2bp]{\sl Circle};
+\dpiclw=0.8bp
+\dpicdraw (4.520367,0.511111)
+ --(4.520367,0.636111)
+ --(4.270367,0.636111)
+ --(4.270367,0.386111)
+ --(4.520367,0.386111)
+ --(4.520367,0.511111)\dpicstop
+\dpicdraw (4.520367,0.636111)
+ --(4.585072,0.39463)\dpicstop
+\draw (4.427719,0.186111) node{\tt buzzer};
+\dpiclw=0.4bp
+\filldraw[line width=0bp](4.200797,0.575719)
+ --(4.270367,0.573611)
+ --(4.213446,0.613667) --cycle\dpicstop
+\dpicdraw (4.252025,0.579725)
+ --(4.120367,0.623611)\dpicstop
+\draw (4.120367,0.623611) node[above left=-2bp]{{\sl In1}};
+\filldraw[line width=0bp](4.2037,0.491111)
+ --(4.270367,0.511111)
+ --(4.2037,0.531111) --cycle\dpicstop
+\dpicdraw (4.251033,0.511111)
+ --(4.120367,0.511111)\dpicstop
+\draw (4.120367,0.511111) node[left=-2bp]{{\sl In2}};
+\filldraw[line width=0bp](4.213446,0.408556)
+ --(4.270367,0.448611)
+ --(4.200797,0.446503) --cycle\dpicstop
+\dpicdraw (4.252025,0.442497)
+ --(4.120367,0.398611)\dpicstop
+\draw (4.120367,0.398611) node[below left=-2bp]{{\sl In3}};
+\dpiclw=0.8bp
+\dpiclw=0.4bp
+\filldraw[line width=0bp](4.375367,0.702778)
+ --(4.395367,0.636111)
+ --(4.415367,0.702778) --cycle\dpicstop
+\dpicdraw (4.395367,0.655445)
+ --(4.395367,0.786111)\dpicstop
+\draw (4.395367,0.786111) node[above=-2bp]{\sl Box};
+\dpiclw=0.8bp
+\dpicdraw (5.529516,0.386111)
+ --(5.529516,0.719444)\dpicstop
+\dpicdraw (5.529516,0.719444)
+ ..controls (5.437469,0.719444) and (5.362849,0.644825)
+ ..(5.362849,0.552778)
+ ..controls (5.362849,0.46073) and (5.437469,0.386111)
+ ..(5.529516,0.386111)\dpicstop
+\draw (5.446183,0.186111) node{\tt buzzer(,{,}C)};
+\dpiclw=0.4bp
+\filldraw[line width=0bp](5.302811,0.610442)
+ --(5.372381,0.608333)
+ --(5.31546,0.648389) --cycle\dpicstop
+\dpicdraw (5.354039,0.614447)
+ --(5.222381,0.658333)\dpicstop
+\draw (5.222381,0.658333) node[above left=-2bp]{{\sl In1}};
+\filldraw[line width=0bp](5.296183,0.532778)
+ --(5.362849,0.552778)
+ --(5.296183,0.572778) --cycle\dpicstop
+\dpicdraw (5.343515,0.552778)
+ --(5.212849,0.552778)\dpicstop
+\draw (5.212849,0.552778) node[left=-2bp]{{\sl In2}};
+\filldraw[line width=0bp](5.31546,0.457167)
+ --(5.372381,0.497222)
+ --(5.302811,0.495114) --cycle\dpicstop
+\dpicdraw (5.354039,0.491108)
+ --(5.222381,0.447222)\dpicstop
+\draw (5.222381,0.447222) node[below left=-2bp]{{\sl In3}};
+\dpiclw=0.8bp
+\dpiclw=0.4bp
+\filldraw[line width=0bp](5.589341,0.68835)
+ --(5.529516,0.652778)
+ --(5.599043,0.649544) --cycle\dpicstop
+\dpicdraw (5.548273,0.657467)
+ --(5.605561,0.671789)
+ ..controls (5.643753,0.681337) and (5.671183,0.711111)
+ ..(5.687849,0.761111)
+ --(5.712849,0.836111)\dpicstop
+\draw (5.712849,0.836111) node[above=-2bp]{\sl Face};
+\dpiclw=0.8bp
+\dpicdraw (3.065693,-0.216667)
+ --(3.065693,-0.091667)
+ --(2.899026,-0.091667)
+ --(2.899026,-0.341667)
+ --(3.065693,-0.341667)
+ --(3.065693,-0.216667)\dpicstop
+\dpicdraw[line width=1.6bp](3.076762,-0.383333)
+ --(3.076762,-0.05)\dpicstop
+\draw (2.987894,-0.583333) node{\tt earphone};
+\dpiclw=0.4bp
+\filldraw[line width=0bp](2.829456,-0.152058)
+ --(2.899026,-0.154167)
+ --(2.842105,-0.114111) --cycle\dpicstop
+\dpicdraw (2.880684,-0.148053)
+ --(2.749026,-0.104167)\dpicstop
+\draw (2.749026,-0.104167) node[above left=-2bp]{{\sl In1}};
+\filldraw[line width=0bp](2.832359,-0.236667)
+ --(2.899026,-0.216667)
+ --(2.832359,-0.196667) --cycle\dpicstop
+\dpicdraw (2.879692,-0.216667)
+ --(2.749026,-0.216667)\dpicstop
+\draw (2.749026,-0.216667) node[left=-2bp]{{\sl In2}};
+\filldraw[line width=0bp](2.842105,-0.319222)
+ --(2.899026,-0.279167)
+ --(2.829456,-0.281275) --cycle\dpicstop
+\dpicdraw (2.880684,-0.285281)
+ --(2.749026,-0.329167)\dpicstop
+\draw (2.749026,-0.329167) node[below left=-2bp]{{\sl In3}};
+\dpiclw=0.8bp
+\dpiclw=0.4bp
+\filldraw[line width=0bp](2.921077,-0.058668)
+ --(2.982359,-0.091667)
+ --(2.949361,-0.030384) --cycle\dpicstop
+\dpicdraw (2.968688,-0.077996)
+ --(2.832359,0.058333)\dpicstop
+\draw (2.832359,0.058333) node[above=-2bp]{\sl Box};
+\dpiclw=0.8bp
+\dpicdraw (3.85454,-0.283333) circle (0.03937in)\dpicstop
+\dpicdraw (4.35454,-0.283333) circle (0.03937in)\dpicstop
+\dpicdraw (3.87454,-0.185354)
+ ..controls (3.960887,0.01734) and (4.248193,0.01734)
+ ..(4.33454,-0.185354)\dpicstop
+\draw (4.10454,-0.583333) node{\tt earphone(,{,}C)};
+\dpiclw=0.4bp
+\filldraw[line width=0bp](3.793257,-0.250335)
+ --(3.85454,-0.283333)
+ --(3.821542,-0.222051) --cycle\dpicstop
+\dpicdraw (3.840869,-0.269662)
+ --(3.70454,-0.133333)\dpicstop
+\draw (3.70454,-0.133333) node[left=-2bp]{\sl L};
+\filldraw[line width=0bp](4.387538,-0.222051)
+ --(4.35454,-0.283333)
+ --(4.415823,-0.250335) --cycle\dpicstop
+\dpicdraw (4.368211,-0.269662)
+ --(4.50454,-0.133333)\dpicstop
+\draw (4.50454,-0.133333) node[right=-2bp]{\sl R};
+\draw (4.10454,-0.033333) node[above=-2bp]{\sl N};
+\draw (4.10454,-0.283333) node{\sl C};
+\dpiclw=0.8bp
+\end{tikzpicture}
+\vspace*{-0.5\baselineskip}
diff --git a/graphics/circuit_macros/doc/Audio.m4 b/graphics/circuit_macros/doc/AudioMan.m4
index 722a2434d8..662c6d0c99 100644
--- a/graphics/circuit_macros/doc/Audio.m4
+++ b/graphics/circuit_macros/doc/AudioMan.m4
@@ -46,14 +46,6 @@ L:[
thicklines_
] with .w at last [].e+(0.0,0.5)
[
- M: microphone
- `"\tt microphone"' at M.s+(0,-0.2) #below
- In123(M)
- thinlines_
- arrow <- from M.Circle.n up 0.15 ; "\sl Circle" above
- thicklines_
- ] with .sw at last [].se+(0.4,0)
-[
Z: buzzer
`"\tt buzzer"' at Z.s+(0,-0.2) #below
In123(Z)
@@ -71,6 +63,24 @@ R:[
"\sl Face" above
thicklines_
] with .sw at last [].se+(0.4,0)
+[
+ M: microphone
+ `"\tt microphone"' at M.s+(0,-0.2) #below
+ In123(M)
+ thinlines_
+ arrow <- from M.Circle.n up 0.15 ; "\sl Circle" above
+ thicklines_
+ ] with .sw at last [].se+(0.4,0)
+[
+ M: microphone(A)
+ `"\tt microphone(A)"' at M.s+(0,-0.2) #below
+ thinlines_
+ arrow <- from M.Head.e+(0,0.05) right 0.2; "\sl Head" ljust
+ spline 0.5 <- from M.Head.b down 0.05 right 0.1 then right 0.1
+ "\sl Head.b" ljust
+ arrow <- from M.Stand.s right 0.2; "\sl Stand.s" ljust
+ thicklines_
+ ] with .n at last [].s+(0,-0.05)
[[
E: earphone
`"\tt earphone"' at E.s+(0,-0.2) #below
@@ -89,6 +99,6 @@ R:[
"\sl C" at E.C
thicklines_
] with .sw at last [].se+(0.6,0)
-] with .n at (0.6 between L and R, R.s)+(0,0.1-ifdpic(0.2,0.25))
+] with .n at (0.6 between L and R, R.s)+(0.5,0.1-ifdpic(0.2,0.25))
.PE
diff --git a/graphics/circuit_macros/doc/Bip.tex b/graphics/circuit_macros/doc/Bip.tex
new file mode 100644
index 0000000000..d44b0376e6
--- /dev/null
+++ b/graphics/circuit_macros/doc/Bip.tex
@@ -0,0 +1,175 @@
+\begin{tikzpicture}[scale=2.54]
+% dpic version 2020.03.01 option -g for TikZ and PGF 1.01
+\ifx\dpiclw\undefined\newdimen\dpiclw\fi
+\global\def\dpicdraw{\draw[line width=\dpiclw]}
+\global\def\dpicstop{;}
+\dpiclw=0.8bp
+\dpiclw=0.8bp
+\dpicdraw (0.1625,0)
+ --(0.1625,0.1)
+ --(0.158796,0.101667)\dpicstop
+\dpicdraw (0.1625,0.5)
+ --(0.1625,0.4)
+ --(0.158796,0.398333)\dpicstop
+\dpicdraw (-0.0375,0.15)
+ --(-0.0375,0.35)\dpicstop
+\dpicdraw (-0.1625,0.25)
+ --(-0.0375,0.25)\dpicstop
+\dpicdraw (0.1625,0.1)
+ --(-0.0375,0.19)\dpicstop
+\filldraw[line width=0bp](0.025108,0.131366)
+ --(0.1125,0.1225)
+ --(0.047906,0.182028) --cycle\dpicstop
+\dpicdraw (0.096479,0.129709)
+ --(0.0125,0.1675)\dpicstop
+\dpicdraw (0.1625,0.4)
+ --(-0.0375,0.31)\dpicstop
+\dpiclw=0.4bp
+\dpicdraw[dotted](-0.1625,0) rectangle (0.1625,0.5)\dpicstop
+\dpiclw=0.8bp
+\draw (0.1625,-0.05) node[below=-2bp]{\hbox{\sl E}};
+\draw (-0.1625,0.25) node[left=-2bp]{\hbox{\sl B}};
+\draw (0.1625,0.5) node[above=-2bp]{\hbox{\sl C}};
+\draw (0,-0.35) node[below=-2bp]{{\tt bi\_tr(up\_ dimen\_)}};
+\dpicdraw (0.6125,0.05)
+ --(0.6125,0.25)\dpicstop
+\dpicdraw (0.7375,0.15)
+ --(0.6125,0.15)\dpicstop
+\dpicdraw (0.4125,0)
+ --(0.6125,0.09)\dpicstop
+\filldraw[line width=0bp](0.527094,0.082028)
+ --(0.4625,0.0225)
+ --(0.549892,0.031366) --cycle\dpicstop
+\dpicdraw (0.478521,0.029709)
+ --(0.5625,0.0675)\dpicstop
+\dpicdraw (0.4125,0.3)
+ --(0.6125,0.21)\dpicstop
+\dpiclw=0.4bp
+\dpicdraw[dotted](0.4125,0) rectangle (0.7375,0.3)\dpicstop
+\dpiclw=0.8bp
+\draw (0.4125,-0.05) node[below=-2bp]{\hbox{\sl E}};
+\draw (0.7375,0.15) node[right=-2bp]{\hbox{\sl B}};
+\draw (0.4125,0.3) node[above=-2bp]{\hbox{\sl C}};
+\draw (0.575,-0.2) node[below=-2bp]{{\tt bi\_tr(,R)}};
+\dpicdraw (1.3625,0.05)
+ --(1.3625,0.25)\dpicstop
+\dpicdraw (1.2375,0.15)
+ --(1.3625,0.15)\dpicstop
+\dpicdraw (1.5625,0)
+ --(1.3625,0.09)\dpicstop
+\filldraw[line width=0bp](1.499892,0.058634)
+ --(1.4125,0.0675)
+ --(1.477094,0.007972) --cycle\dpicstop
+\dpicdraw (1.5125,0.0225)
+ --(1.428521,0.060291)\dpicstop
+\dpicdraw (1.5625,0.3)
+ --(1.3625,0.21)\dpicstop
+\dpiclw=0.4bp
+\dpicdraw[dotted](1.2375,0) rectangle (1.5625,0.3)\dpicstop
+\dpiclw=0.8bp
+\draw (1.5625,-0.05) node[below=-2bp]{\hbox{\sl E}};
+\draw (1.2375,0.15) node[left=-2bp]{\hbox{\sl B}};
+\draw (1.5625,0.3) node[above=-2bp]{\hbox{\sl C}};
+\draw (1.4,-0.35) node[below=-2bp]{{\tt bi\_tr(,{,}P)}};
+\dpicdraw (2.2625,0.05)
+ --(2.2625,0.25)\dpicstop
+\dpicdraw (2.1375,0.15)
+ --(2.2625,0.15)\dpicstop
+\dpicdraw (2.4625,0)
+ --(2.2625,0.09)\dpicstop
+\filldraw[line width=0bp](2.325108,0.031366)
+ --(2.4125,0.0225)
+ --(2.347906,0.082028) --cycle\dpicstop
+\dpicdraw (2.396479,0.029709)
+ --(2.3125,0.0675)\dpicstop
+\dpicdraw (2.4625,0.3)
+ --(2.2625,0.21)\dpicstop
+\dpicdraw (2.1375,0.15)
+ ..controls (2.1375,0.260457) and (2.227043,0.35)
+ ..(2.3375,0.35)
+ ..controls (2.447957,0.35) and (2.5375,0.260457)
+ ..(2.5375,0.15)\dpicstop
+\dpicdraw (2.5375,0.15)
+ --(2.5375,0.15)\dpicstop
+\dpicdraw (2.5375,0.15)
+ ..controls (2.5375,0.039543) and (2.447957,-0.05)
+ ..(2.3375,-0.05)
+ ..controls (2.227043,-0.05) and (2.1375,0.039543)
+ ..(2.1375,0.15)\dpicstop
+\dpicdraw (2.1375,0.15)
+ --(2.1375,0.15)\dpicstop
+\dpiclw=0.4bp
+\dpicdraw[dotted](2.1375,-0.05) rectangle (2.5375,0.35)\dpicstop
+\dpiclw=0.8bp
+\draw (2.4625,-0.05) node[below=-2bp]{\hbox{\sl E}};
+\draw (2.1375,0.15) node[left=-2bp]{\hbox{\sl B}};
+\draw (2.4625,0.3) node[above=-2bp]{\hbox{\sl C}};
+\draw (2.3375,-0.2) node[below=-2bp]{{\tt bi\_tr(,{,},E)}};
+\dpicdraw (2.9125,0.05)
+ --(2.9125,0.25)\dpicstop
+\dpicdraw (3.1125,0)
+ --(2.9125,0.09)\dpicstop
+\filldraw[line width=0bp](2.975108,0.031366)
+ --(3.0625,0.0225)
+ --(2.997906,0.082028) --cycle\dpicstop
+\dpicdraw (3.046479,0.029709)
+ --(2.9625,0.0675)\dpicstop
+\dpicdraw (3.1125,0.3)
+ --(2.9125,0.21)\dpicstop
+\dpicdraw (2.7875,0.15)
+ --(2.8775,0.15)\dpicstop
+\dpicdraw (2.8775,0.05)
+ --(2.8775,0.25)\dpicstop
+\dpiclw=0.4bp
+\dpicdraw[dotted](2.7875,0) rectangle (3.1125,0.3)\dpicstop
+\dpiclw=0.8bp
+\draw (3.1125,-0.05) node[below=-2bp]{\hbox{\sl E}};
+\draw (2.7875,0.15) node[left=-2bp]{\hbox{\sl G}};
+\draw (3.1125,0.3) node[above=-2bp]{\hbox{\sl C}};
+\draw (2.95,-0.35) node[below=-2bp]{{\tt igbt}};
+\dpicdraw (3.4625,0.15)
+ --(3.4625,0.35)\dpicstop
+\dpicdraw (3.6625,0.1)
+ --(3.4625,0.19)\dpicstop
+\filldraw[line width=0bp](3.525108,0.131366)
+ --(3.6125,0.1225)
+ --(3.547906,0.182028) --cycle\dpicstop
+\dpicdraw (3.596479,0.129709)
+ --(3.5125,0.1675)\dpicstop
+\dpicdraw (3.6625,0.4)
+ --(3.4625,0.31)\dpicstop
+\dpicdraw (3.3525,0.175)
+ --(3.4275,0.175)
+ --(3.4275,0.325)\dpicstop
+\dpicdraw (3.6625,0)
+ --(3.8625,0)\dpicstop
+\dpicdraw (3.6625,0.5)
+ --(3.8625,0.5)\dpicstop
+\dpicdraw (3.8625,0)
+ --(3.8625,0.213916)\dpicstop
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!0!black]
+\dpicdraw (3.8625,0.213916)
+ --(3.820833,0.213916)
+ --(3.8625,0.28055)
+ --(3.904167,0.213916)
+ --(3.8625,0.213916)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\dpicdraw (3.908218,0.286084)
+ --(3.816782,0.286084)\dpicstop
+\dpicdraw (3.8625,0.286084)
+ --(3.8625,0.5)\dpicstop
+\dpicdraw (3.6625,0)
+ --(3.6625,0.1)\dpicstop
+\dpicdraw (3.6625,0.5)
+ --(3.6625,0.4)\dpicstop
+\dpiclw=0.4bp
+\dpicdraw[dotted](3.3525,0) rectangle (3.913753,0.5)\dpicstop
+\dpiclw=0.8bp
+\draw (3.6625,-0.05) node[below=-2bp]{\hbox{\sl E}};
+\draw (3.3525,0.175) node[left=-2bp]{\hbox{\sl G}};
+\draw (3.6625,0.5) node[above=-2bp]{\hbox{\sl C}};
+\draw (3.633127,-0.2) node[below=-2bp]{{\tt igbt(,{,}LD)}};
+\end{tikzpicture}
+\vspace*{-0.5\baselineskip}
diff --git a/graphics/circuit_macros/doc/Bip.m4 b/graphics/circuit_macros/doc/BipMan.m4
index 121517d16d..121517d16d 100644
--- a/graphics/circuit_macros/doc/Bip.m4
+++ b/graphics/circuit_macros/doc/BipMan.m4
diff --git a/graphics/circuit_macros/doc/CctTable.tex b/graphics/circuit_macros/doc/CctTable.tex
new file mode 100644
index 0000000000..ee442a4f3b
--- /dev/null
+++ b/graphics/circuit_macros/doc/CctTable.tex
@@ -0,0 +1,858 @@
+\begin{tikzpicture}[scale=2.54]
+% dpic version 2020.03.01 option -g for TikZ and PGF 1.01
+\ifx\dpiclw\undefined\newdimen\dpiclw\fi
+\global\def\dpicdraw{\draw[line width=\dpiclw]}
+\global\def\dpicstop{;}
+\dpiclw=0.8bp
+\dpiclw=0.8bp
+\dpicdraw (0,0)
+ --(0.25,0)
+ --(0.270833,0.041667)
+ --(0.3125,-0.041667)
+ --(0.354167,0.041667)
+ --(0.395833,-0.041667)
+ --(0.4375,0.041667)
+ --(0.479167,-0.041667)
+ --(0.5,0)
+ --(0.75,0)\dpicstop
+\draw (0.777674,0) node[right=-2bp]{{\tt resistor}};
+\dpicdraw (2.05,0)
+ --(2.3,0)
+ --(2.341667,0.083333)
+ --(2.383333,0)
+ --(2.425,0.083333)
+ --(2.466667,0)
+ --(2.508333,0.083333)
+ --(2.55,0)
+ --(2.55,0)
+ --(2.8,0)\dpicstop
+\draw (2.827674,0) node[right=-2bp]{\tt resistor(,{,}Q) };
+\dpicdraw (4.1,0)
+ --(4.35,0)\dpicstop
+\dpicdraw (4.6,0)
+ --(4.6,0.05)
+ --(4.35,0.05)
+ --(4.35,-0.05)
+ --(4.6,-0.05)
+ --(4.6,0)\dpicstop
+\dpicdraw (4.6,0)
+ --(4.85,0)\dpicstop
+\draw (4.877674,0) node[right=-2bp]{\shortstack[l]{\tt resistor(,{,}E)\\ {\tt $\equiv$ ebox}}};
+\dpicdraw (0,-0.28)
+ --(0.25,-0.28)\dpicstop
+\dpicdraw (0.5,-0.28)
+ --(0.5,-0.23)
+ --(0.25,-0.23)
+ --(0.25,-0.33)
+ --(0.5,-0.33)
+ --(0.5,-0.28)\dpicstop
+\dpicdraw (0.5,-0.28)
+ --(0.75,-0.28)\dpicstop
+\dpicdraw (0.45,-0.23)
+ --(0.3,-0.33)\dpicstop
+\draw (0.777674,-0.28) node[right=-2bp]{\tt resistor(,{,}ES) };
+\dpicdraw (2.05,-0.28)
+ --(2.3,-0.28)
+ --(2.3,-0.221667)
+ --(2.35,-0.221667)
+ --(2.35,-0.28)
+ --(2.4,-0.28)
+ --(2.4,-0.221667)
+ --(2.45,-0.221667)
+ --(2.45,-0.28)
+ --(2.5,-0.28)
+ --(2.5,-0.221667)
+ --(2.55,-0.221667)
+ --(2.55,-0.28)
+ --(2.55,-0.28)
+ --(2.8,-0.28)\dpicstop
+\draw (2.827674,-0.28) node[right=-2bp]{\tt resistor(,{,}H) };
+\dpicdraw (4.1,-0.28)
+ --(4.35,-0.28)\dpicstop
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!50!black]
+\dpicdraw (4.6,-0.28)
+ --(4.6,-0.23)
+ --(4.35,-0.23)
+ --(4.35,-0.33)
+ --(4.6,-0.33)
+ --(4.6,-0.28)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\dpicdraw (4.6,-0.28)
+ --(4.85,-0.28)\dpicstop
+\draw (4.877674,-0.28) node[right=-2bp]{{\tt ebox(,{,},0.5)}};
+\dpicdraw (0,-0.56)
+ --(0.25,-0.56)\dpicstop
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!0!black]
+\dpicdraw (0.25,-0.56)
+ --(0.25,-0.6225)
+ --(0.375,-0.56)
+ --(0.25,-0.56)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!0!black]
+\dpicdraw (0.5,-0.56)
+ --(0.5,-0.4975)
+ --(0.375,-0.56)
+ --(0.5,-0.56)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\dpicdraw (0.5,-0.56)
+ --(0.75,-0.56)\dpicstop
+\draw (0.777674,-0.56) node[right=-2bp]{{\tt resistor(,{,}V)}};
+\dpicdraw (2.05,-0.61)
+ --(2.375,-0.61)
+ --(2.375,-0.41)
+ --(2.425,-0.36)
+ --(2.475,-0.41)
+ --(2.475,-0.61)
+ --(2.8,-0.61)\dpicstop
+\dpicdraw[fill=black](2.425,-0.36) circle (0.007874in)\dpicstop
+\draw (2.827674,-0.61) node[right=-2bp]{{\tt thermocouple}};
+\dpicdraw (4.1,-0.56)
+ --(4.225,-0.56)\dpicstop
+\dpicdraw (4.725,-0.56)
+ --(4.725,-0.41)
+ --(4.225,-0.41)
+ --(4.225,-0.71)
+ --(4.725,-0.71)
+ --(4.725,-0.56)\dpicstop
+\dpicdraw (4.725,-0.56)
+ --(4.85,-0.56)\dpicstop
+\draw (4.877674,-0.56) node[right=-2bp]{{\tt ebox(,0.5,0.3)}};
+\dpicdraw (0,-0.84)
+ --(0.25,-0.84)\dpicstop
+\dpicdraw (0.25,-0.84)
+ --(0.25,-0.845556)\dpicstop
+\dpicdraw (0.25,-0.84)
+ ..controls (0.25,-0.822741) and (0.263991,-0.80875)
+ ..(0.28125,-0.80875)
+ ..controls (0.298509,-0.80875) and (0.3125,-0.822741)
+ ..(0.3125,-0.84)\dpicstop
+\dpicdraw (0.3125,-0.84)
+ --(0.3125,-0.845556)\dpicstop
+\dpicdraw (0.3125,-0.84)
+ ..controls (0.3125,-0.822741) and (0.326491,-0.80875)
+ ..(0.34375,-0.80875)
+ ..controls (0.361009,-0.80875) and (0.375,-0.822741)
+ ..(0.375,-0.84)\dpicstop
+\dpicdraw (0.375,-0.84)
+ --(0.375,-0.845556)\dpicstop
+\dpicdraw (0.375,-0.84)
+ ..controls (0.375,-0.822741) and (0.388991,-0.80875)
+ ..(0.40625,-0.80875)
+ ..controls (0.423509,-0.80875) and (0.4375,-0.822741)
+ ..(0.4375,-0.84)\dpicstop
+\dpicdraw (0.4375,-0.84)
+ --(0.4375,-0.845556)\dpicstop
+\dpicdraw (0.4375,-0.84)
+ ..controls (0.4375,-0.822741) and (0.451491,-0.80875)
+ ..(0.46875,-0.80875)
+ ..controls (0.486009,-0.80875) and (0.5,-0.822741)
+ ..(0.5,-0.84)\dpicstop
+\dpicdraw (0.5,-0.84)
+ --(0.5,-0.845556)\dpicstop
+\dpicdraw (0.5,-0.84)
+ --(0.75,-0.84)\dpicstop
+\draw (0.777674,-0.84) node[right=-2bp]{{\tt inductor}};
+\dpicdraw (2.05,-0.84)
+ --(2.283266,-0.84)\dpicstop
+\dpicdraw[line width=0.4bp](2.283266,-0.84) circle (0.00109in)\dpicstop
+\dpicdraw (2.283266,-0.84)
+ ..controls (2.265746,-0.802428) and (2.298931,-0.761082)
+ ..(2.339404,-0.770054)
+ ..controls (2.379877,-0.779027) and (2.392478,-0.830524)
+ ..(2.360721,-0.857171)\dpicstop
+\dpicdraw[line width=0.4bp](2.360721,-0.857171) circle (0.00109in)\dpicstop
+\dpicdraw (2.360721,-0.857171)
+ ..controls (2.324962,-0.827166) and (2.34618,-0.768869)
+ ..(2.392861,-0.768869)
+ ..controls (2.439541,-0.768869) and (2.460759,-0.827166)
+ ..(2.425,-0.857171)\dpicstop
+\dpicdraw[line width=0.4bp](2.425,-0.857171) circle (0.00109in)\dpicstop
+\dpicdraw (2.425,-0.857171)
+ ..controls (2.389241,-0.827166) and (2.410459,-0.768869)
+ ..(2.457139,-0.768869)
+ ..controls (2.50382,-0.768869) and (2.525038,-0.827166)
+ ..(2.489279,-0.857171)\dpicstop
+\dpicdraw[line width=0.4bp](2.489279,-0.857171) circle (0.00109in)\dpicstop
+\dpicdraw (2.489279,-0.857171)
+ ..controls (2.457522,-0.830524) and (2.470123,-0.779027)
+ ..(2.510596,-0.770054)
+ ..controls (2.551069,-0.761082) and (2.584254,-0.802428)
+ ..(2.566734,-0.84)\dpicstop
+\dpicdraw[line width=0.4bp](2.566734,-0.84) circle (0.00109in)\dpicstop
+\dpicdraw (2.566734,-0.84)
+ --(2.8,-0.84)\dpicstop
+\draw (2.827674,-0.84) node[right=-2bp]{{\tt inductor(,W)}};
+\dpicdraw (4.1,-0.84)
+ --(4.35,-0.84)\dpicstop
+\dpicdraw[line width=0.4bp](4.35,-0.84) circle (0.00109in)\dpicstop
+\dpicdraw (4.35,-0.84)
+ ..controls (4.35,-0.805625) and (4.364625,-0.7775)
+ ..(4.3825,-0.7775)
+ ..controls (4.400375,-0.7775) and (4.415,-0.797188)
+ ..(4.415,-0.82125)
+ ..controls (4.415,-0.845313) and (4.40825,-0.865)
+ ..(4.4,-0.865)
+ ..controls (4.39175,-0.865) and (4.385,-0.845313)
+ ..(4.385,-0.82125)
+ ..controls (4.385,-0.797188) and (4.403,-0.7775)
+ ..(4.425,-0.7775)
+ ..controls (4.447,-0.7775) and (4.465,-0.797188)
+ ..(4.465,-0.82125)
+ ..controls (4.465,-0.845313) and (4.45825,-0.865)
+ ..(4.45,-0.865)
+ ..controls (4.44175,-0.865) and (4.435,-0.845313)
+ ..(4.435,-0.82125)
+ ..controls (4.435,-0.797188) and (4.453,-0.7775)
+ ..(4.475,-0.7775)
+ ..controls (4.497,-0.7775) and (4.515,-0.797188)
+ ..(4.515,-0.82125)
+ ..controls (4.515,-0.845313) and (4.50825,-0.865)
+ ..(4.5,-0.865)
+ ..controls (4.49175,-0.865) and (4.485,-0.845313)
+ ..(4.485,-0.82125)
+ ..controls (4.485,-0.797188) and (4.503,-0.7775)
+ ..(4.525,-0.7775)
+ ..controls (4.547,-0.7775) and (4.565,-0.797188)
+ ..(4.565,-0.82125)
+ ..controls (4.565,-0.845313) and (4.55825,-0.865)
+ ..(4.55,-0.865)
+ ..controls (4.54175,-0.865) and (4.535,-0.845313)
+ ..(4.535,-0.82125)
+ ..controls (4.535,-0.797188) and (4.549625,-0.7775)
+ ..(4.5675,-0.7775)
+ ..controls (4.585375,-0.7775) and (4.6,-0.805625)
+ ..(4.6,-0.84)\dpicstop
+\dpicdraw[line width=0.4bp](4.6,-0.84) circle (0.00109in)\dpicstop
+\dpicdraw (4.6,-0.84)
+ --(4.85,-0.84)\dpicstop
+\draw (4.877674,-0.84) node[right=-2bp]{{\tt inductor(,L)}};
+\dpicdraw (0,-1.12)
+ --(0.25,-1.12)\dpicstop
+\dpicdraw (0.25,-1.12)
+ --(0.25,-1.125556)\dpicstop
+\dpicdraw (0.25,-1.12)
+ ..controls (0.25,-1.102741) and (0.263991,-1.08875)
+ ..(0.28125,-1.08875)
+ ..controls (0.298509,-1.08875) and (0.3125,-1.102741)
+ ..(0.3125,-1.12)\dpicstop
+\dpicdraw (0.3125,-1.12)
+ --(0.3125,-1.125556)\dpicstop
+\dpicdraw (0.3125,-1.12)
+ ..controls (0.3125,-1.102741) and (0.326491,-1.08875)
+ ..(0.34375,-1.08875)
+ ..controls (0.361009,-1.08875) and (0.375,-1.102741)
+ ..(0.375,-1.12)\dpicstop
+\dpicdraw (0.375,-1.12)
+ --(0.375,-1.125556)\dpicstop
+\dpicdraw (0.375,-1.12)
+ ..controls (0.375,-1.102741) and (0.388991,-1.08875)
+ ..(0.40625,-1.08875)
+ ..controls (0.423509,-1.08875) and (0.4375,-1.102741)
+ ..(0.4375,-1.12)\dpicstop
+\dpicdraw (0.4375,-1.12)
+ --(0.4375,-1.125556)\dpicstop
+\dpicdraw (0.4375,-1.12)
+ ..controls (0.4375,-1.102741) and (0.451491,-1.08875)
+ ..(0.46875,-1.08875)
+ ..controls (0.486009,-1.08875) and (0.5,-1.102741)
+ ..(0.5,-1.12)\dpicstop
+\dpicdraw (0.5,-1.12)
+ --(0.5,-1.125556)\dpicstop
+\dpicdraw (0.5,-1.12)
+ --(0.75,-1.12)\dpicstop
+\dpicdraw (0.25,-1.067917)
+ --(0.5,-1.067917)\dpicstop
+\dpicdraw (0.25,-1.036667)
+ --(0.5,-1.036667)\dpicstop
+\draw (0.777674,-1.12) node[right=-2bp]{{\tt inductor(,{,},M)}};
+\dpicdraw (2.05,-1.12)
+ --(2.218988,-1.12)\dpicstop
+\dpicdraw[line width=0.4bp](2.218988,-1.12) circle (0.00109in)\dpicstop
+\dpicdraw (2.218988,-1.12)
+ ..controls (2.201468,-1.082428) and (2.234652,-1.041082)
+ ..(2.275125,-1.050054)
+ ..controls (2.315598,-1.059027) and (2.3282,-1.110524)
+ ..(2.296442,-1.137171)\dpicstop
+\dpicdraw[line width=0.4bp](2.296442,-1.137171) circle (0.00109in)\dpicstop
+\dpicdraw (2.296442,-1.137171)
+ ..controls (2.260683,-1.107166) and (2.281901,-1.048869)
+ ..(2.328582,-1.048869)
+ ..controls (2.375262,-1.048869) and (2.396481,-1.107166)
+ ..(2.360721,-1.137171)\dpicstop
+\dpicdraw[line width=0.4bp](2.360721,-1.137171) circle (0.00109in)\dpicstop
+\dpicdraw (2.360721,-1.137171)
+ ..controls (2.324962,-1.107166) and (2.34618,-1.048869)
+ ..(2.392861,-1.048869)
+ ..controls (2.439541,-1.048869) and (2.460759,-1.107166)
+ ..(2.425,-1.137171)\dpicstop
+\dpicdraw[line width=0.4bp](2.425,-1.137171) circle (0.00109in)\dpicstop
+\dpicdraw (2.425,-1.137171)
+ ..controls (2.389241,-1.107166) and (2.410459,-1.048869)
+ ..(2.457139,-1.048869)
+ ..controls (2.50382,-1.048869) and (2.525038,-1.107166)
+ ..(2.489279,-1.137171)\dpicstop
+\dpicdraw[line width=0.4bp](2.489279,-1.137171) circle (0.00109in)\dpicstop
+\dpicdraw (2.489279,-1.137171)
+ ..controls (2.453519,-1.107166) and (2.474738,-1.048869)
+ ..(2.521418,-1.048869)
+ ..controls (2.568099,-1.048869) and (2.589317,-1.107166)
+ ..(2.553558,-1.137171)\dpicstop
+\dpicdraw[line width=0.4bp](2.553558,-1.137171) circle (0.00109in)\dpicstop
+\dpicdraw (2.553558,-1.137171)
+ ..controls (2.5218,-1.110524) and (2.534402,-1.059027)
+ ..(2.574875,-1.050054)
+ ..controls (2.615348,-1.041082) and (2.648532,-1.082428)
+ ..(2.631012,-1.12)\dpicstop
+\dpicdraw[line width=0.4bp](2.631012,-1.12) circle (0.00109in)\dpicstop
+\dpicdraw (2.631012,-1.12)
+ --(2.8,-1.12)\dpicstop
+\dpicdraw[dash pattern=on 0.032415in off 0.032415in](2.214303,-1.028036)
+ --(2.635697,-1.028036)\dpicstop
+\dpicdraw[dash pattern=on 0.032415in off 0.032415in](2.214303,-0.996786)
+ --(2.635697,-0.996786)\dpicstop
+\draw (2.827674,-1.12) node[right=-2bp]{{\tt inductor(,W,6,P)}};
+\dpicdraw (4.3,-1.12)
+ --(4.51875,-1.12)\dpicstop
+\dpicdraw (4.553969,-1.08875)
+ --(4.51875,-1.08875)
+ --(4.51875,-1.15125)
+ --(4.553969,-1.15125)\dpicstop
+\dpicdraw (4.675,-1.12) circle (0.049213in)\dpicstop
+\draw (4.675,-1.12) node{G};
+\dpicdraw (4.796031,-1.08875)
+ --(4.83125,-1.08875)
+ --(4.83125,-1.15125)
+ --(4.796031,-1.15125)\dpicstop
+\dpicdraw (4.83125,-1.12)
+ --(5.05,-1.12)\dpicstop
+\draw (5.077674,-1.12) node[right=-2bp]{{\tt ttmotor(,G)}};
+\dpicdraw (0,-1.4)
+ --(0.35,-1.4)\dpicstop
+\dpicdraw (0.35,-1.483333)
+ --(0.35,-1.316667)\dpicstop
+\dpicdraw (0.4,-1.483333)
+ --(0.4,-1.316667)\dpicstop
+\dpicdraw (0.4,-1.4)
+ --(0.75,-1.4)\dpicstop
+\draw (0.777674,-1.4) node[right=-2bp]{{\tt capacitor}};
+\dpicdraw (2.05,-1.4)
+ --(2.4,-1.4)\dpicstop
+\dpicdraw (2.4,-1.4625)
+ --(2.4,-1.3375)\dpicstop
+\dpicdraw (2.45,-1.4625)
+ ..controls (2.427671,-1.423825) and (2.427671,-1.376175)
+ ..(2.45,-1.3375)\dpicstop
+\dpicdraw (2.433253,-1.4)
+ --(2.8,-1.4)\dpicstop
+\draw (2.827674,-1.4) node[right=-2bp]{{\tt capacitor(,C)}};
+\dpicdraw (4.1,-1.4)
+ --(4.45,-1.4)\dpicstop
+\dpicdraw (4.45,-1.4625)
+ --(4.45,-1.3375)\dpicstop
+\dpicdraw (4.5,-1.4625)
+ ..controls (4.477671,-1.423825) and (4.477671,-1.376175)
+ ..(4.5,-1.3375)\dpicstop
+\dpicdraw (4.483253,-1.4)
+ --(4.85,-1.4)\dpicstop
+\dpicdraw[line width=0.5bp](4.429167,-1.441667)
+ --(4.3875,-1.441667)\dpicstop
+\dpicdraw[line width=0.5bp](4.408333,-1.420833)
+ --(4.408333,-1.4625)\dpicstop
+\draw (4.877674,-1.4) node[right=-2bp]{{\tt capacitor(,C+)}};
+\dpicdraw (0,-1.68)
+ --(0.35,-1.68)\dpicstop
+\dpicdraw (0.4,-1.7425)
+ --(0.35,-1.7425)
+ --(0.35,-1.6175)
+ --(0.4,-1.6175)\dpicstop
+\dpicdraw (0.383333,-1.726875)
+ --(0.383333,-1.633125)\dpicstop
+\dpicdraw (0.383333,-1.68)
+ --(0.75,-1.68)\dpicstop
+\draw (0.777674,-1.68) node[right=-2bp]{{\tt capacitor(,P)}};
+\dpicdraw (2.05,-1.68)
+ --(2.375,-1.68)\dpicstop
+\dpiclw=0.4bp
+\dpicdraw (2.40625,-1.68)
+ --(2.40625,-1.63)
+ --(2.375,-1.63)
+ --(2.375,-1.73)
+ --(2.40625,-1.73)
+ --(2.40625,-1.68)\dpicstop
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!0!black]
+\dpicdraw (2.44375,-1.68)
+ --(2.44375,-1.63)
+ --(2.475,-1.63)
+ --(2.475,-1.73)
+ --(2.44375,-1.73)
+ --(2.44375,-1.68)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\dpiclw=0.8bp
+\dpicdraw (2.475,-1.68)
+ --(2.8,-1.68)\dpicstop
+\draw (2.827674,-1.68) node[right=-2bp]{{\tt capacitor(,E)}};
+\dpicdraw (4.1,-1.68)
+ --(4.425,-1.68)\dpicstop
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!0!black]
+\dpicdraw (4.45625,-1.68)
+ --(4.45625,-1.63)
+ --(4.425,-1.63)
+ --(4.425,-1.73)
+ --(4.45625,-1.73)
+ --(4.45625,-1.68)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!0!black]
+\dpicdraw (4.49375,-1.68)
+ --(4.49375,-1.63)
+ --(4.525,-1.63)
+ --(4.525,-1.73)
+ --(4.49375,-1.73)
+ --(4.49375,-1.68)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\dpicdraw (4.525,-1.68)
+ --(4.85,-1.68)\dpicstop
+\draw (4.877674,-1.68) node[right=-2bp]{{\tt capacitor(,K)}};
+\dpicdraw (0,-1.93)
+ --(0.325,-1.93)\dpicstop
+\dpiclw=0.4bp
+\dpicdraw (0.35625,-1.93)
+ --(0.35625,-1.88)
+ --(0.325,-1.88)
+ --(0.325,-1.98)
+ --(0.35625,-1.98)
+ --(0.35625,-1.93)\dpicstop
+\dpicdraw (0.39375,-1.93)
+ --(0.39375,-1.88)
+ --(0.425,-1.88)
+ --(0.425,-1.98)
+ --(0.39375,-1.98)
+ --(0.39375,-1.93)\dpicstop
+\dpiclw=0.8bp
+\dpicdraw (0.425,-1.93)
+ --(0.75,-1.93)\dpicstop
+\draw (0.777674,-1.93) node[right=-2bp]{{\tt capacitor(,M)}};
+\dpicdraw (2.05,-1.93)
+ --(2.391667,-1.93)\dpicstop
+\dpicdraw (2.422917,-1.93)
+ --(2.422917,-1.88)
+ --(2.391667,-1.88)
+ --(2.391667,-1.98)
+ --(2.422917,-1.98)
+ --(2.422917,-1.93)\dpicstop
+\dpicdraw (2.458333,-1.88)
+ --(2.458333,-1.98)\dpicstop
+\dpicdraw (2.458333,-1.93)
+ --(2.8,-1.93)\dpicstop
+\draw (2.827674,-1.93) node[right=-2bp]{{\tt capacitor(,N)}};
+\dpicdraw (4.1,-1.93)
+ --(4.433333,-1.93)\dpicstop
+\dpicdraw (4.433333,-1.971667)
+ --(4.433333,-1.888333)\dpicstop
+\dpicdraw (4.454167,-1.93)
+ --(4.454167,-1.8675)
+ --(4.495833,-1.8675)
+ --(4.495833,-1.9925)
+ --(4.454167,-1.9925)
+ --(4.454167,-1.93)\dpicstop
+\dpicdraw (4.516667,-1.971667)
+ --(4.516667,-1.888333)\dpicstop
+\dpicdraw (4.516667,-1.93)
+ --(4.85,-1.93)\dpicstop
+\draw (4.877674,-1.93) node[right=-2bp]{{\tt xtal}};
+\dpicdraw (0,-2.18)
+ --(0.25,-2.18)\dpicstop
+\dpicdraw (0.5,-2.18)
+ --(0.5,-2.13)
+ --(0.25,-2.13)
+ --(0.25,-2.23)
+ --(0.5,-2.23)
+ --(0.5,-2.18)\dpicstop
+\dpicdraw (0.25,-2.18)
+ --(0.29,-2.18)
+ --(0.29,-2.155)
+ --(0.33,-2.155)
+ --(0.33,-2.205)
+ --(0.37,-2.205)
+ --(0.37,-2.155)
+ --(0.41,-2.155)
+ --(0.41,-2.18)
+ --(0.45,-2.18)\dpicstop
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!0!black]
+\dpicdraw (0.5125,-2.18)
+ --(0.5125,-2.13)
+ --(0.45,-2.13)
+ --(0.45,-2.23)
+ --(0.5125,-2.23)
+ --(0.5125,-2.18)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\dpicdraw (0.5125,-2.18)
+ --(0.7625,-2.18)\dpicstop
+\draw (0.777674,-2.18) node[right=-2bp]{{\tt memristor}};
+\dpicdraw (2.05,-2.18)
+ --(2.3,-2.18)\dpicstop
+\dpicdraw (2.55,-2.18)
+ --(2.55,-2.13)
+ --(2.3,-2.13)
+ --(2.3,-2.23)
+ --(2.55,-2.23)
+ --(2.55,-2.18)\dpicstop
+\dpicdraw (2.3625,-2.13)
+ --(2.3625,-2.23)\dpicstop
+\dpicdraw (2.425,-2.13)
+ --(2.425,-2.23)\dpicstop
+\dpicdraw (2.4875,-2.13)
+ --(2.4875,-2.23)\dpicstop
+\dpicdraw (2.55,-2.18)
+ --(2.8,-2.18)\dpicstop
+\draw (2.827674,-2.18) node[right=-2bp]{{\tt heater}};
+\dpicdraw (4.6625,-2.18)
+ --(4.85,-2.18)\dpicstop
+\dpicdraw (4.1,-2.18)
+ --(4.308333,-2.18)\dpicstop
+\dpicdraw[line width=0.4bp](4.308333,-2.18) circle (0.00109in)\dpicstop
+\dpicdraw (4.308333,-2.221667)
+ --(4.641667,-2.221667)\dpicstop
+\dpicdraw (4.641667,-2.221667)
+ ..controls (4.653173,-2.221667) and (4.6625,-2.203012)
+ ..(4.6625,-2.18)
+ ..controls (4.6625,-2.156988) and (4.653173,-2.138333)
+ ..(4.641667,-2.138333)\dpicstop
+\dpicdraw (4.641667,-2.138333)
+ --(4.308333,-2.138333)\dpicstop
+\dpicdraw (4.308333,-2.138333)
+ ..controls (4.296827,-2.138333) and (4.2875,-2.156988)
+ ..(4.2875,-2.18)
+ ..controls (4.2875,-2.203012) and (4.296827,-2.221667)
+ ..(4.308333,-2.221667)
+ ..controls (4.31984,-2.221667) and (4.329167,-2.203012)
+ ..(4.329167,-2.18)
+ ..controls (4.329167,-2.156988) and (4.31984,-2.138333)
+ ..(4.308333,-2.138333)\dpicstop
+\draw (4.877674,-2.18) node[right=-2bp]{{\tt tline}};
+\dpicdraw[fill=black](0,-2.38) circle (0.007874in)\dpicstop
+\dpicdraw[fill=black](0.75,-2.38) circle (0.007874in)\dpicstop
+\draw (0.777674,-2.38) node[right=-2bp]{{\tt gap}};
+\dpicdraw[fill=black](2.05,-2.43) circle (0.007874in)\dpicstop
+\dpicdraw[fill=black](2.8,-2.43) circle (0.007874in)\dpicstop
+\filldraw[line width=0bp](2.64,-2.455)
+ --(2.74,-2.43)
+ --(2.64,-2.405) --cycle\dpicstop
+\dpicdraw (2.11,-2.43)
+ --(2.717094,-2.43)\dpicstop
+\draw (2.827674,-2.43) node[right=-2bp]{{\tt gap(,{,}A)}};
+\dpicdraw (4.1,-2.43)
+ --(4.85,-2.43)\dpicstop
+\filldraw[line width=0bp](4.425,-2.455)
+ --(4.525,-2.43)
+ --(4.425,-2.405) --cycle\dpicstop
+\dpicdraw (4.425,-2.43)
+ --(4.502094,-2.43)\dpicstop
+\draw (4.877674,-2.43) node[right=-2bp]{{\tt arrowline}};
+\dpicdraw (0,-2.68)
+ --(0.325,-2.68)
+ --(0.325,-2.52375)\dpicstop
+\dpicdraw (0.325,-2.52375)
+ ..controls (0.325,-2.489264) and (0.339567,-2.46125)
+ ..(0.3575,-2.46125)
+ ..controls (0.375433,-2.46125) and (0.39,-2.480859)
+ ..(0.39,-2.505)
+ ..controls (0.39,-2.529141) and (0.383277,-2.54875)
+ ..(0.375,-2.54875)
+ ..controls (0.366723,-2.54875) and (0.36,-2.529141)
+ ..(0.36,-2.505)
+ ..controls (0.36,-2.480859) and (0.374567,-2.46125)
+ ..(0.3925,-2.46125)
+ ..controls (0.410433,-2.46125) and (0.425,-2.489264)
+ ..(0.425,-2.52375)\dpicstop
+\dpicdraw (0.425,-2.52375)
+ --(0.425,-2.68)
+ --(0.75,-2.68)\dpicstop
+\dpicdraw (0.375,-2.52375) circle (0.03937in)\dpicstop
+\draw (0.777674,-2.68) node[right=-2bp]{{\tt lamp}};
+\dpicdraw (2.05,-2.68)
+ --(2.225,-2.68)\dpicstop
+\dpicdraw (2.625,-2.68)
+ ..controls (2.624554,-2.672786) and (2.623417,-2.664086)
+ ..(2.622464,-2.660589)
+ ..controls (2.621511,-2.657091) and (2.619497,-2.651585)
+ ..(2.617969,-2.648304)
+ ..controls (2.616442,-2.645022) and (2.613514,-2.639948)
+ ..(2.611437,-2.636982)
+ ..controls (2.609359,-2.634016) and (2.605593,-2.629528)
+ ..(2.603033,-2.626967)
+ ..controls (2.600472,-2.624407) and (2.595984,-2.620641)
+ ..(2.593018,-2.618563)
+ ..controls (2.590052,-2.616486) and (2.584978,-2.613558)
+ ..(2.581696,-2.612031)
+ ..controls (2.578415,-2.610503) and (2.572909,-2.608489)
+ ..(2.569411,-2.607536)
+ ..controls (2.565914,-2.606583) and (2.560143,-2.605628)
+ ..(2.556537,-2.605404)
+ ..controls (2.55293,-2.605181) and (2.493973,-2.605)
+ ..(2.425,-2.605)
+ ..controls (2.356027,-2.605) and (2.29707,-2.605181)
+ ..(2.293463,-2.605404)
+ ..controls (2.289857,-2.605628) and (2.284086,-2.606583)
+ ..(2.280589,-2.607536)
+ ..controls (2.277091,-2.608489) and (2.271585,-2.610503)
+ ..(2.268304,-2.612031)
+ ..controls (2.265022,-2.613558) and (2.259948,-2.616486)
+ ..(2.256982,-2.618563)
+ ..controls (2.254016,-2.620641) and (2.249528,-2.624407)
+ ..(2.246967,-2.626967)
+ ..controls (2.244407,-2.629528) and (2.240641,-2.634016)
+ ..(2.238563,-2.636982)
+ ..controls (2.236486,-2.639948) and (2.233558,-2.645022)
+ ..(2.232031,-2.648304)
+ ..controls (2.230503,-2.651585) and (2.228489,-2.657091)
+ ..(2.227536,-2.660589)
+ ..controls (2.226583,-2.664086) and (2.225628,-2.669857)
+ ..(2.225404,-2.673463)
+ ..controls (2.225181,-2.67707) and (2.225,-2.68)
+ ..(2.225,-2.68)
+ ..controls (2.225,-2.68) and (2.225181,-2.68293)
+ ..(2.225404,-2.686537)
+ ..controls (2.225628,-2.690143) and (2.226583,-2.695914)
+ ..(2.227536,-2.699411)
+ ..controls (2.228489,-2.702909) and (2.230503,-2.708415)
+ ..(2.232031,-2.711696)
+ ..controls (2.233558,-2.714978) and (2.236486,-2.720052)
+ ..(2.238563,-2.723018)
+ ..controls (2.240641,-2.725984) and (2.244407,-2.730472)
+ ..(2.246967,-2.733033)
+ ..controls (2.249528,-2.735593) and (2.254016,-2.739359)
+ ..(2.256982,-2.741437)
+ ..controls (2.259948,-2.743514) and (2.265022,-2.746442)
+ ..(2.268304,-2.747969)
+ ..controls (2.271585,-2.749497) and (2.277091,-2.751511)
+ ..(2.280589,-2.752464)
+ ..controls (2.284086,-2.753417) and (2.289857,-2.754372)
+ ..(2.293463,-2.754596)
+ ..controls (2.29707,-2.754819) and (2.356027,-2.755)
+ ..(2.425,-2.755)
+ ..controls (2.493973,-2.755) and (2.55293,-2.754819)
+ ..(2.556537,-2.754596)
+ ..controls (2.560143,-2.754372) and (2.565914,-2.753417)
+ ..(2.569411,-2.752464)
+ ..controls (2.572909,-2.751511) and (2.578415,-2.749497)
+ ..(2.581696,-2.747969)
+ ..controls (2.584978,-2.746442) and (2.590052,-2.743514)
+ ..(2.593018,-2.741437)
+ ..controls (2.595984,-2.739359) and (2.600472,-2.735593)
+ ..(2.603033,-2.733033)
+ ..controls (2.605593,-2.730472) and (2.609359,-2.725984)
+ ..(2.611437,-2.723018)
+ ..controls (2.613514,-2.720052) and (2.616442,-2.714978)
+ ..(2.617969,-2.711696)
+ ..controls (2.619497,-2.708415) and (2.621511,-2.702909)
+ ..(2.622464,-2.699411)
+ ..controls (2.623417,-2.695914) and (2.624372,-2.690143)
+ ..(2.624596,-2.686537)
+ ..controls (2.624819,-2.68293) and (2.625,-2.68)
+ ..(2.625,-2.68)\dpicstop
+\dpicdraw (2.225,-2.68)
+ --(2.305,-2.68)
+ --(2.465,-2.63)\dpicstop
+\dpicdraw (2.425,-2.68)
+ --(2.625,-2.68)\dpicstop
+\dpicdraw (2.625,-2.68)
+ --(2.8,-2.68)\dpicstop
+\draw (2.827674,-2.68) node[right=-2bp]{{\tt reed}};
+\dpicdraw (4.1,-2.68)
+ --(4.275,-2.68)\dpicstop
+\fill[fill=white!90!black,line width=0bp](4.675,-2.68)
+ ..controls (4.674554,-2.672786) and (4.673417,-2.664086)
+ ..(4.672464,-2.660589)
+ ..controls (4.671511,-2.657091) and (4.669497,-2.651585)
+ ..(4.667969,-2.648304)
+ ..controls (4.666442,-2.645022) and (4.663514,-2.639948)
+ ..(4.661437,-2.636982)
+ ..controls (4.659359,-2.634016) and (4.655593,-2.629528)
+ ..(4.653033,-2.626967)
+ ..controls (4.650472,-2.624407) and (4.645984,-2.620641)
+ ..(4.643018,-2.618563)
+ ..controls (4.640052,-2.616486) and (4.634978,-2.613558)
+ ..(4.631696,-2.612031)
+ ..controls (4.628415,-2.610503) and (4.622909,-2.608489)
+ ..(4.619411,-2.607536)
+ ..controls (4.615914,-2.606583) and (4.610143,-2.605628)
+ ..(4.606537,-2.605404)
+ ..controls (4.60293,-2.605181) and (4.543973,-2.605)
+ ..(4.475,-2.605)
+ ..controls (4.406027,-2.605) and (4.34707,-2.605181)
+ ..(4.343463,-2.605404)
+ ..controls (4.339857,-2.605628) and (4.334086,-2.606583)
+ ..(4.330589,-2.607536)
+ ..controls (4.327091,-2.608489) and (4.321585,-2.610503)
+ ..(4.318304,-2.612031)
+ ..controls (4.315022,-2.613558) and (4.309948,-2.616486)
+ ..(4.306982,-2.618563)
+ ..controls (4.304016,-2.620641) and (4.299528,-2.624407)
+ ..(4.296967,-2.626967)
+ ..controls (4.294407,-2.629528) and (4.290641,-2.634016)
+ ..(4.288563,-2.636982)
+ ..controls (4.286486,-2.639948) and (4.283558,-2.645022)
+ ..(4.282031,-2.648304)
+ ..controls (4.280503,-2.651585) and (4.278489,-2.657091)
+ ..(4.277536,-2.660589)
+ ..controls (4.276583,-2.664086) and (4.275628,-2.669857)
+ ..(4.275404,-2.673463)
+ ..controls (4.275181,-2.67707) and (4.275,-2.68)
+ ..(4.275,-2.68)
+ ..controls (4.275,-2.68) and (4.275181,-2.68293)
+ ..(4.275404,-2.686537)
+ ..controls (4.275628,-2.690143) and (4.276583,-2.695914)
+ ..(4.277536,-2.699411)
+ ..controls (4.278489,-2.702909) and (4.280503,-2.708415)
+ ..(4.282031,-2.711696)
+ ..controls (4.283558,-2.714978) and (4.286486,-2.720052)
+ ..(4.288563,-2.723018)
+ ..controls (4.290641,-2.725984) and (4.294407,-2.730472)
+ ..(4.296967,-2.733033)
+ ..controls (4.299528,-2.735593) and (4.304016,-2.739359)
+ ..(4.306982,-2.741437)
+ ..controls (4.309948,-2.743514) and (4.315022,-2.746442)
+ ..(4.318304,-2.747969)
+ ..controls (4.321585,-2.749497) and (4.327091,-2.751511)
+ ..(4.330589,-2.752464)
+ ..controls (4.334086,-2.753417) and (4.339857,-2.754372)
+ ..(4.343463,-2.754596)
+ ..controls (4.34707,-2.754819) and (4.406027,-2.755)
+ ..(4.475,-2.755)
+ ..controls (4.543973,-2.755) and (4.60293,-2.754819)
+ ..(4.606537,-2.754596)
+ ..controls (4.610143,-2.754372) and (4.615914,-2.753417)
+ ..(4.619411,-2.752464)
+ ..controls (4.622909,-2.751511) and (4.628415,-2.749497)
+ ..(4.631696,-2.747969)
+ ..controls (4.634978,-2.746442) and (4.640052,-2.743514)
+ ..(4.643018,-2.741437)
+ ..controls (4.645984,-2.739359) and (4.650472,-2.735593)
+ ..(4.653033,-2.733033)
+ ..controls (4.655593,-2.730472) and (4.659359,-2.725984)
+ ..(4.661437,-2.723018)
+ ..controls (4.663514,-2.720052) and (4.666442,-2.714978)
+ ..(4.667969,-2.711696)
+ ..controls (4.669497,-2.708415) and (4.671511,-2.702909)
+ ..(4.672464,-2.699411)
+ ..controls (4.673417,-2.695914) and (4.674372,-2.690143)
+ ..(4.674596,-2.686537)
+ ..controls (4.674819,-2.68293) and (4.675,-2.68)
+ ..(4.675,-2.68) --cycle\dpicstop
+\dpicdraw (4.675,-2.68)
+ ..controls (4.674554,-2.672786) and (4.673417,-2.664086)
+ ..(4.672464,-2.660589)
+ ..controls (4.671511,-2.657091) and (4.669497,-2.651585)
+ ..(4.667969,-2.648304)
+ ..controls (4.666442,-2.645022) and (4.663514,-2.639948)
+ ..(4.661437,-2.636982)
+ ..controls (4.659359,-2.634016) and (4.655593,-2.629528)
+ ..(4.653033,-2.626967)
+ ..controls (4.650472,-2.624407) and (4.645984,-2.620641)
+ ..(4.643018,-2.618563)
+ ..controls (4.640052,-2.616486) and (4.634978,-2.613558)
+ ..(4.631696,-2.612031)
+ ..controls (4.628415,-2.610503) and (4.622909,-2.608489)
+ ..(4.619411,-2.607536)
+ ..controls (4.615914,-2.606583) and (4.610143,-2.605628)
+ ..(4.606537,-2.605404)
+ ..controls (4.60293,-2.605181) and (4.543973,-2.605)
+ ..(4.475,-2.605)
+ ..controls (4.406027,-2.605) and (4.34707,-2.605181)
+ ..(4.343463,-2.605404)
+ ..controls (4.339857,-2.605628) and (4.334086,-2.606583)
+ ..(4.330589,-2.607536)
+ ..controls (4.327091,-2.608489) and (4.321585,-2.610503)
+ ..(4.318304,-2.612031)
+ ..controls (4.315022,-2.613558) and (4.309948,-2.616486)
+ ..(4.306982,-2.618563)
+ ..controls (4.304016,-2.620641) and (4.299528,-2.624407)
+ ..(4.296967,-2.626967)
+ ..controls (4.294407,-2.629528) and (4.290641,-2.634016)
+ ..(4.288563,-2.636982)
+ ..controls (4.286486,-2.639948) and (4.283558,-2.645022)
+ ..(4.282031,-2.648304)
+ ..controls (4.280503,-2.651585) and (4.278489,-2.657091)
+ ..(4.277536,-2.660589)
+ ..controls (4.276583,-2.664086) and (4.275628,-2.669857)
+ ..(4.275404,-2.673463)
+ ..controls (4.275181,-2.67707) and (4.275,-2.68)
+ ..(4.275,-2.68)
+ ..controls (4.275,-2.68) and (4.275181,-2.68293)
+ ..(4.275404,-2.686537)
+ ..controls (4.275628,-2.690143) and (4.276583,-2.695914)
+ ..(4.277536,-2.699411)
+ ..controls (4.278489,-2.702909) and (4.280503,-2.708415)
+ ..(4.282031,-2.711696)
+ ..controls (4.283558,-2.714978) and (4.286486,-2.720052)
+ ..(4.288563,-2.723018)
+ ..controls (4.290641,-2.725984) and (4.294407,-2.730472)
+ ..(4.296967,-2.733033)
+ ..controls (4.299528,-2.735593) and (4.304016,-2.739359)
+ ..(4.306982,-2.741437)
+ ..controls (4.309948,-2.743514) and (4.315022,-2.746442)
+ ..(4.318304,-2.747969)
+ ..controls (4.321585,-2.749497) and (4.327091,-2.751511)
+ ..(4.330589,-2.752464)
+ ..controls (4.334086,-2.753417) and (4.339857,-2.754372)
+ ..(4.343463,-2.754596)
+ ..controls (4.34707,-2.754819) and (4.406027,-2.755)
+ ..(4.475,-2.755)
+ ..controls (4.543973,-2.755) and (4.60293,-2.754819)
+ ..(4.606537,-2.754596)
+ ..controls (4.610143,-2.754372) and (4.615914,-2.753417)
+ ..(4.619411,-2.752464)
+ ..controls (4.622909,-2.751511) and (4.628415,-2.749497)
+ ..(4.631696,-2.747969)
+ ..controls (4.634978,-2.746442) and (4.640052,-2.743514)
+ ..(4.643018,-2.741437)
+ ..controls (4.645984,-2.739359) and (4.650472,-2.735593)
+ ..(4.653033,-2.733033)
+ ..controls (4.655593,-2.730472) and (4.659359,-2.725984)
+ ..(4.661437,-2.723018)
+ ..controls (4.663514,-2.720052) and (4.666442,-2.714978)
+ ..(4.667969,-2.711696)
+ ..controls (4.669497,-2.708415) and (4.671511,-2.702909)
+ ..(4.672464,-2.699411)
+ ..controls (4.673417,-2.695914) and (4.674372,-2.690143)
+ ..(4.674596,-2.686537)
+ ..controls (4.674819,-2.68293) and (4.675,-2.68)
+ ..(4.675,-2.68)\dpicstop
+\dpicdraw (4.275,-2.68)
+ --(4.355,-2.68)
+ --(4.515,-2.691111)\dpicstop
+\dpicdraw (4.475,-2.68)
+ --(4.675,-2.68)\dpicstop
+\dpicdraw (4.675,-2.68)
+ --(4.85,-2.68)\dpicstop
+\draw (4.877674,-2.68) node[right=-2bp]{{\tt reed(,{,},fill\_(0.9),CR)}};
+\dpicdraw (0,-2.93)
+ --(0.25,-2.93)\dpicstop
+\dpicdraw (0.5,-2.93)
+ --(0.5,-2.88)
+ --(0.25,-2.88)
+ --(0.25,-2.98)
+ --(0.5,-2.98)
+ --(0.5,-2.93)\dpicstop
+\dpicdraw (0.25,-2.98)
+ --(0.333333,-2.93)
+ --(0.25,-2.88)\dpicstop
+\dpicdraw (0.5,-2.93)
+ --(0.75,-2.93)\dpicstop
+\draw (0.777674,-2.93) node[right=-2bp]{{\tt pvcell}};
+\end{tikzpicture}
+\vspace*{-0.5\baselineskip}
diff --git a/graphics/circuit_macros/doc/CctTable.m4 b/graphics/circuit_macros/doc/CctTableMan.m4
index f7e47d0758..f7e47d0758 100644
--- a/graphics/circuit_macros/doc/CctTable.m4
+++ b/graphics/circuit_macros/doc/CctTableMan.m4
diff --git a/graphics/circuit_macros/doc/Circuit_macros.pdf b/graphics/circuit_macros/doc/Circuit_macros.pdf
index 302f862d93..78a14a9ca9 100644
--- a/graphics/circuit_macros/doc/Circuit_macros.pdf
+++ b/graphics/circuit_macros/doc/Circuit_macros.pdf
Binary files differ
diff --git a/graphics/circuit_macros/doc/Conn.tex b/graphics/circuit_macros/doc/Conn.tex
new file mode 100644
index 0000000000..23d31e0e2b
--- /dev/null
+++ b/graphics/circuit_macros/doc/Conn.tex
@@ -0,0 +1,178 @@
+\begin{tikzpicture}[scale=2.54]
+% dpic version 2020.03.01 option -g for TikZ and PGF 1.01
+\ifx\dpiclw\undefined\newdimen\dpiclw\fi
+\global\def\dpicdraw{\draw[line width=\dpiclw]}
+\global\def\dpicstop{;}
+\dpiclw=0.8bp
+\dpiclw=0.8bp
+{\sf
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!100!black]
+\dpicdraw (0.502778,0.324448)
+ --(0.377778,0.324448)
+ --(0.377778,-0.275552)
+ --(0.627778,-0.275552)
+ --(0.627778,0.324448)
+ --(0.502778,0.324448)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\dpicdraw (0.627778,-0.125552)
+ --(0.377778,-0.125552)\dpicstop
+\dpicdraw (0.627778,0.024448)
+ --(0.377778,0.024448)\dpicstop
+\dpicdraw (0.627778,0.174448)
+ --(0.377778,0.174448)\dpicstop
+\dpicdraw[fill=white](0.502778,-0.200552) circle (0.007874in)\dpicstop
+\dpicdraw[fill=white](0.502778,-0.050552) circle (0.007874in)\dpicstop
+\dpicdraw[fill=white](0.502778,0.099448) circle (0.007874in)\dpicstop
+\dpicdraw[fill=white](0.502778,0.249448) circle (0.007874in)\dpicstop
+\dpiclw=0.4bp
+\filldraw[line width=0bp](0.311111,-0.220552)
+ --(0.377778,-0.200552)
+ --(0.311111,-0.180552) --cycle\dpicstop
+\dpicdraw (0.368111,-0.200552)
+ --(0.227778,-0.200552)\dpicstop
+\draw (0.227778,-0.200552) node[left=-2bp]{L1};
+\filldraw[line width=0bp](0.311111,0.229448)
+ --(0.377778,0.249448)
+ --(0.311111,0.269448) --cycle\dpicstop
+\dpicdraw (0.368111,0.249448)
+ --(0.227778,0.249448)\dpicstop
+\draw (0.227778,0.249448) node[left=-2bp]{L4};
+\draw (0.077778,0.044448) node{$\vdots$};
+\filldraw[line width=0bp](0.694444,-0.180552)
+ --(0.627778,-0.200552)
+ --(0.694444,-0.220552) --cycle\dpicstop
+\dpicdraw (0.637445,-0.200552)
+ --(0.877778,-0.200552)\dpicstop
+\draw (0.877778,-0.200552) node[right=-2bp]{R1};
+\filldraw[line width=0bp](0.694444,0.269448)
+ --(0.627778,0.249448)
+ --(0.694444,0.229448) --cycle\dpicstop
+\dpicdraw (0.637445,0.249448)
+ --(0.877778,0.249448)\dpicstop
+\draw (0.877778,0.249448) node[right=-2bp]{R4};
+\draw (1.027778,0.044448) node{$\vdots$};
+\filldraw[line width=0bp](0.547154,-0.146931)
+ --(0.502778,-0.200552)
+ --(0.569342,-0.180213) --cycle\dpicstop
+\dpicdraw (0.510821,-0.195189)
+ --(0.652778,-0.100552)\dpicstop
+\draw (0.652778,-0.100552) node[right=-2bp]{T1};
+\filldraw[line width=0bp](0.547154,0.303069)
+ --(0.502778,0.249448)
+ --(0.569342,0.269787) --cycle\dpicstop
+\dpicdraw (0.510821,0.254811)
+ --(0.652778,0.349448)\dpicstop
+\draw (0.652778,0.349448) node[right=-2bp]{T4};
+\draw (0.802778,0.144448) node{$\vdots$};
+\dpiclw=0.8bp
+\draw (0.502778,-0.425552) node(CS1){\tt tstrip(U)};
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!100!black]
+\dpicdraw (2.327778,-0.000552)
+ --(2.327778,0.124448)
+ --(1.327778,0.124448)
+ --(1.327778,-0.125552)
+ --(2.327778,-0.125552)
+ --(2.327778,-0.000552)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\dpicdraw[fill=black](1.427778,-0.000552) circle (0.007874in)\dpicstop
+\dpicdraw[fill=black](1.627778,-0.000552) circle (0.007874in)\dpicstop
+\dpicdraw[fill=black](1.827778,-0.000552) circle (0.007874in)\dpicstop
+\dpicdraw[fill=black](2.027778,-0.000552) circle (0.007874in)\dpicstop
+\dpicdraw[fill=black](2.227778,-0.000552) circle (0.007874in)\dpicstop
+\dpiclw=0.4bp
+\filldraw[line width=0bp](1.439703,0.068021)
+ --(1.427778,-0.000552)
+ --(1.475481,0.050132) --cycle\dpicstop
+\dpicdraw (1.432101,0.008095)
+ --(1.527778,0.199448)\dpicstop
+\draw (1.527778,0.199448) node[above=-2bp]{T1};
+\filldraw[line width=0bp](2.239703,0.068021)
+ --(2.227778,-0.000552)
+ --(2.275481,0.050132) --cycle\dpicstop
+\dpicdraw (2.232101,0.008095)
+ --(2.327778,0.199448)\dpicstop
+\draw (2.327778,0.199448) node[above=-2bp]{T5};
+\draw (1.927778,0.199448) node[above=-2bp]{$\cdots$};
+\draw (1.227778,-0.325552) node(CS2){\shortstack{\rlap{\hbox to 2bp{}\tt tstrip(R,5,}\\%
+\rlap{\hbox to 2bp{}\tt $\;\;$DO;wid=1.0;ht=0.25)}}};
+}
+\dpiclw=0.8bp
+\dpicdraw (2.927778,-0.025552) circle (0.03937in)\dpicstop
+\dpicdraw[fill=black](2.927778,-0.025552) circle (0.013123in)\dpicstop
+\draw (2.927778,-0.125552) node[below=-2bp]{\tt ccoax\vphantom{(}};
+\dpiclw=0.4bp
+\filldraw[line width=0bp](2.984346,0.059301)
+ --(2.951348,-0.001982)
+ --(3.012631,0.031017) --cycle\dpicstop
+\dpicdraw (2.965019,0.01169)
+ --(3.051348,0.098018)\dpicstop
+\draw (3.051348,0.098018) node[right=-2bp]{C};
+\filldraw[line width=0bp](3.096351,-0.037477)
+ --(3.027778,-0.025552)
+ --(3.078462,-0.073255) --cycle\dpicstop
+\dpicdraw (3.045071,-0.034198)
+ --(3.127778,-0.075552)\dpicstop
+\draw (3.127778,-0.075552) node[right=-2bp]{S};
+\dpiclw=0.8bp
+\dpicdraw (2.927778,0.274448) circle (0.03937in)\dpicstop
+\dpicdraw[fill=white](2.927778,0.274448) circle (0.013123in)\dpicstop
+\draw (3.027778,0.374448) node[right=-2bp]{\tt ccoax(,F)};
+\dpicdraw (3.740551,-0.225552) circle (0.019685in)\dpicstop
+\dpicdraw (3.415551,-0.225552)
+ --(3.690551,-0.225552)\dpicstop
+\draw (3.603051,-0.425552) node{\tt tconn(,O)};
+\dpicdraw (4.090551,-0.225552)
+ --(4.465551,-0.225552)\dpicstop
+\dpicdraw (4.382218,-0.142218)
+ --(4.465551,-0.225552)
+ --(4.382218,-0.308885)\dpicstop
+\draw (4.278051,-0.425552) node{\tt (,>)};
+\dpicdraw (4.765551,-0.225552)
+ --(5.078051,-0.225552)\dpicstop
+\dpicdraw (4.994718,-0.142218)
+ --(5.078051,-0.225552)
+ --(4.994718,-0.308885)\dpicstop
+\dpicdraw (5.057218,-0.142218)
+ --(5.140551,-0.225552)
+ --(5.057218,-0.308885)\dpicstop
+\draw (4.953051,-0.425552) node{\tt (,>>)};
+\dpicdraw (4.090551,0.274448)
+ --(4.382218,0.274448)\dpicstop
+\dpicdraw (4.465551,0.357782)
+ --(4.382218,0.274448)
+ --(4.465551,0.191115)\dpicstop
+\draw (4.278051,0.074448) node{\tt tconn(,<)};
+\dpicdraw (4.765551,0.274448)
+ --(4.994718,0.274448)\dpicstop
+\dpicdraw (5.078051,0.357782)
+ --(4.994718,0.274448)
+ --(5.078051,0.191115)\dpicstop
+\dpicdraw (5.140551,0.357782)
+ --(5.057218,0.274448)
+ --(5.140551,0.191115)\dpicstop
+\draw (4.953051,0.074448) node{\tt (,<<)};
+\dpicdraw (5.540551,0.357782)
+ --(5.657218,0.357782)
+ --(5.740551,0.274448)
+ --(5.657218,0.191115)
+ --(5.340551,0.191115)
+ --(5.340551,0.357782)
+ --(5.540551,0.357782)\dpicstop
+\draw (5.498884,0.274448) node{$ V_2$};
+\draw (5.340551,0.191115) node[below right=-2bp]{\tt tbox(V\_2)};
+\dpicdraw (5.540551,-0.225552)
+ --(5.423884,-0.225552)
+ --(5.340551,-0.142218)
+ --(5.423884,-0.058885)
+ --(5.657218,-0.058885)
+ --(5.740551,-0.142218)
+ --(5.657218,-0.225552)
+ --(5.540551,-0.225552)\dpicstop
+\draw (5.540551,-0.142218) node{$ V_1$};
+\draw (5.340551,-0.225552) node[below right=-2bp]{\tt tbox(V\_1,{,},<>)};
+\end{tikzpicture}
+\vspace*{-0.5\baselineskip}
diff --git a/graphics/circuit_macros/doc/Conn.m4 b/graphics/circuit_macros/doc/ConnMan.m4
index 7253d2b313..204ad5d96a 100644
--- a/graphics/circuit_macros/doc/Conn.m4
+++ b/graphics/circuit_macros/doc/ConnMan.m4
@@ -17,7 +17,7 @@ T:[
"$\vdots$" at (0.5 between last "" and 2nd last "")+(0.15,0.02)
thicklines_
CS1: "`\tt tstrip(U)'" at S1.s+(0,-0.15)
- S2: tstrip(R,5,DO;wid=1.0;ht=0.25) with .sw at S1.se+(0.7,0.15)
+ S2: tstrip(R,5,DO;wid=1.0;ht=0.25) with .sw at S1.se+(0.8,0.15)
thinlines_
arrow <- up 0.2 right 0.1 from S2.T1; "T1" above
arrow <- up 0.2 right 0.1 from S2.T5; "T5" above
@@ -36,7 +36,7 @@ C: [
thicklines_
C2: ccoax(at C1+(0,0.3),F)
`"\tt ccoax(,F)"' ht 11 pt__ wid 0.65 at C2.ne ljust
- ] with .C1.sw at T.S2.se+(0.5,0.0)
+ ] with .C1.sw at T.S2.se+(0.6,0.0)
Y: [
tconn(,O)
@@ -46,24 +46,24 @@ Y: [
{`"\tt (,>)"' at last line.c+(0,-0.2)}
move to P1.end+(0.3,0)
tconn(,>>)
- {`"\tt (,>>)"' at last line.c+(0,-0.2)}
+ {`"\tt (,>{}>)"' at last line.c+(0,-0.2)}
move to P1.start+(0,linewid)
P3: tconn(,<)
{`"\tt tconn(,<)"' at last line.c+(0,-0.2)}
move to P3.end+(0.3,0)
tconn(,<<)
- {`"\tt (,<<)"' at last line.c+(0,-0.2)}
+ {`"\tt (,<{}<)"' at last line.c+(0,-0.2)}
] with .sw at (C.e.x-0.4,T.s.y)
B: [
tbox(V_2)
- `"\tt tbox(V\_2)"' at last [].sw below ljust
- [ left_;
- tbox(V_1,,,<>) ] with .nw at last [].sw+(0,-0.25)
- `"\tt tbox(V\_1,{,},<>)"' at last [].sw below ljust
-# `"\tt left\_"' at last [].sw +(0,-0.2) ljust `"\tt tbox(V\_1)"' ljust
-] with .nw at Y.ne+(0.2,0)
+ { `"\tt tbox(V\_2)"' at last [].sw below ljust }
+ tbox(V_1,,,<) with .sw at last [].se+(0.75,0)
+ { `"\tt tbox(V\_1,{,},<)"' at last [].s below }
+ tbox(V_1,,,<>) with .sw at last [].se+(0.75,0)
+ { `"\tt tbox(V\_1,{,},<>)"' at last [].s below }
+] with .nw at T.sw+(0,-0.2)
.PE
diff --git a/graphics/circuit_macros/doc/Contact.tex b/graphics/circuit_macros/doc/Contact.tex
new file mode 100644
index 0000000000..1870617cc1
--- /dev/null
+++ b/graphics/circuit_macros/doc/Contact.tex
@@ -0,0 +1,373 @@
+\begin{tikzpicture}[scale=2.54]
+% dpic version 2020.03.01 option -g for TikZ and PGF 1.01
+\ifx\dpiclw\undefined\newdimen\dpiclw\fi
+\global\def\dpicdraw{\draw[line width=\dpiclw]}
+\global\def\dpicstop{;}
+\dpiclw=0.8bp
+\dpiclw=0.8bp
+\dpicdraw[fill=white](0.02,0.03125) circle (0.007874in)\dpicstop
+\dpicdraw (0.04,0.03125)
+ --(0.27,0.03125)\dpicstop
+\filldraw[line width=0bp](0.186667,0.114583)
+ --(0.228333,0.03125)
+ --(0.27,0.114583) --cycle\dpicstop
+\dpicdraw (0.228333,0.043673)
+ --(0.228333,0.15625)
+ --(0.328333,0.15625)\dpicstop
+\filldraw[line width=0bp](0.27,-0.114583)
+ --(0.228333,-0.03125)
+ --(0.186667,-0.114583) --cycle\dpicstop
+\dpicdraw (0.228333,-0.043673)
+ --(0.228333,-0.15625)
+ --(0.328333,-0.15625)\dpicstop
+\draw (0.164167,-0.347917) node{\tt contact};
+\draw (0,0.03125) node[left=-2bp]{\sl P};
+\draw (0.328333,-0.15625) node[right=-2bp]{\sl O};
+\draw (0.328333,0.15625) node[right=-2bp]{\sl C};
+\dpicdraw[fill=white](0.798333,-0.03125) circle (0.007874in)\dpicstop
+\dpicdraw (0.818333,-0.03125)
+ --(1.048333,-0.03125)\dpicstop
+\filldraw[line width=0bp](1.048333,-0.114583)
+ --(1.006667,-0.03125)
+ --(0.965,-0.114583) --cycle\dpicstop
+\dpicdraw (1.006667,-0.043673)
+ --(1.006667,-0.15625)
+ --(1.106667,-0.15625)\dpicstop
+\filldraw[line width=0bp](0.965,0.114583)
+ --(1.006667,0.03125)
+ --(1.048333,0.114583) --cycle\dpicstop
+\dpicdraw (1.006667,0.043673)
+ --(1.006667,0.15625)
+ --(1.106667,0.15625)\dpicstop
+\draw (0.9425,-0.347917) node{\tt (R)};
+\draw (0.778333,-0.03125) node[left=-2bp]{\sl P};
+\draw (1.106667,0.15625) node[right=-2bp]{\sl O};
+\draw (1.106667,-0.15625) node[right=-2bp]{\sl C};
+\dpicdraw[fill=white](1.576667,0.104583) circle (0.007874in)\dpicstop
+\dpicdraw (1.596667,0.104583)
+ --(1.826667,0.104583)\dpicstop
+\filldraw[line width=0bp](1.826667,-0.04125)
+ --(1.785,0.042083)
+ --(1.743333,-0.04125) --cycle\dpicstop
+\dpicdraw (1.785,0.029661)
+ --(1.785,-0.082917)
+ --(1.885,-0.082917)\dpicstop
+\draw (1.720833,-0.347917) node{\tt (O)};
+\dpicdraw[fill=white](2.355,-0.073333) circle (0.007874in)\dpicstop
+\dpicdraw (2.375,-0.073333)
+ --(2.605,-0.073333)\dpicstop
+\filldraw[line width=0bp](2.521667,0.01)
+ --(2.563333,-0.073333)
+ --(2.605,0.01) --cycle\dpicstop
+\dpicdraw (2.563333,-0.060911)
+ --(2.563333,0.051667)
+ --(2.663333,0.051667)\dpicstop
+\draw (2.499167,-0.347917) node{\tt (C)};
+\dpicdraw[fill=white](3.133333,0) circle (0.007874in)\dpicstop
+\filldraw[line width=0bp](3.3,0.145833)
+ --(3.341667,0.0625)
+ --(3.383333,0.145833) --cycle\dpicstop
+\dpicdraw (3.341667,0.074923)
+ --(3.341667,0.1875)
+ --(3.441667,0.1875)\dpicstop
+\filldraw[line width=0bp](3.383333,-0.145833)
+ --(3.341667,-0.0625)
+ --(3.3,-0.145833) --cycle\dpicstop
+\dpicdraw (3.341667,-0.074923)
+ --(3.341667,-0.1875)
+ --(3.441667,-0.1875)\dpicstop
+\dpicdraw (3.153333,0)
+ --(3.383333,0)\dpicstop
+\draw (3.2775,-0.379167) node{\tt (P)};
+\draw (3.113333,0) node[left=-2bp]{\sl P};
+\draw (3.441667,-0.1875) node[right=-2bp]{\sl O};
+\draw (3.441667,0.1875) node[right=-2bp]{\sl C};
+\dpicdraw[fill=white](3.911667,0) circle (0.007874in)\dpicstop
+\filldraw[line width=0bp](4.161667,-0.145833)
+ --(4.12,-0.0625)
+ --(4.078333,-0.145833) --cycle\dpicstop
+\dpicdraw (4.12,-0.074923)
+ --(4.12,-0.1875)
+ --(4.22,-0.1875)\dpicstop
+\filldraw[line width=0bp](4.078333,0.145833)
+ --(4.12,0.0625)
+ --(4.161667,0.145833) --cycle\dpicstop
+\dpicdraw (4.12,0.074923)
+ --(4.12,0.1875)
+ --(4.22,0.1875)\dpicstop
+\dpicdraw (3.931667,0)
+ --(4.161667,0)\dpicstop
+\draw (4.055833,-0.379167) node{\tt (PR)};
+\draw (3.891667,0) node[left=-2bp]{\sl P};
+\draw (4.22,0.1875) node[right=-2bp]{\sl O};
+\draw (4.22,-0.1875) node[right=-2bp]{\sl C};
+\dpicdraw[fill=white](4.69,0) circle (0.007874in)\dpicstop
+\filldraw[line width=0bp](4.856667,0.145833)
+ --(4.898333,0.0625)
+ --(4.94,0.145833) --cycle\dpicstop
+\dpicdraw (4.898333,0.074923)
+ --(4.898333,0.1875)
+ --(4.998333,0.1875)\dpicstop
+\filldraw[line width=0bp](4.94,-0.145833)
+ --(4.898333,-0.0625)
+ --(4.856667,-0.145833) --cycle\dpicstop
+\dpicdraw (4.898333,-0.074923)
+ --(4.898333,-0.1875)
+ --(4.998333,-0.1875)\dpicstop
+\dpicdraw (4.709157,-0.005747)
+ --(4.91749,-0.068247)\dpicstop
+\draw (4.834167,-0.379167) node{\tt (PO)};
+\draw (4.998333,-0.1875) node[right=-2bp]{\sl O};
+\draw (4.998333,0.1875) node[right=-2bp]{\sl C};
+\dpicdraw[fill=white](5.468333,0) circle (0.007874in)\dpicstop
+\filldraw[line width=0bp](5.635,0.145833)
+ --(5.676667,0.0625)
+ --(5.718333,0.145833) --cycle\dpicstop
+\dpicdraw (5.676667,0.074923)
+ --(5.676667,0.1875)
+ --(5.776667,0.1875)\dpicstop
+\filldraw[line width=0bp](5.718333,-0.145833)
+ --(5.676667,-0.0625)
+ --(5.635,-0.145833) --cycle\dpicstop
+\dpicdraw (5.676667,-0.074923)
+ --(5.676667,-0.1875)
+ --(5.776667,-0.1875)\dpicstop
+\dpicdraw (5.48749,0.005747)
+ --(5.695823,0.068247)\dpicstop
+\draw (5.6125,-0.379167) node{\tt (PC)};
+\dpicdraw[fill=white](0.02,-0.711528) circle (0.007874in)\dpicstop
+\dpicdraw (0.04,-0.711528)
+ --(0.27,-0.711528)\dpicstop
+\dpicdraw[fill=white](0.228333,-0.685972) circle (0.007874in)\dpicstop
+\dpicdraw[fill=white](0.228333,-0.814028) circle (0.007874in)\dpicstop
+\draw (0.135,-1.000694) node{\tt (I)};
+\draw (0,-0.711528) node[left=-2bp]{\sl P};
+\draw (0.248333,-0.814028) node[right=-2bp]{\sl O};
+\draw (0.248333,-0.685972) node[right=-2bp]{\sl C};
+\dpicdraw[fill=white](0.74,-0.788472) circle (0.007874in)\dpicstop
+\dpicdraw (0.76,-0.788472)
+ --(0.99,-0.788472)\dpicstop
+\dpicdraw[fill=white](0.948333,-0.814028) circle (0.007874in)\dpicstop
+\dpicdraw[fill=white](0.948333,-0.685972) circle (0.007874in)\dpicstop
+\draw (0.855,-1.000694) node{\tt (RI)};
+\draw (0.72,-0.788472) node[left=-2bp]{\sl P};
+\draw (0.968333,-0.685972) node[right=-2bp]{\sl O};
+\draw (0.968333,-0.814028) node[right=-2bp]{\sl C};
+\dpicdraw[fill=white](1.46,-0.69875) circle (0.007874in)\dpicstop
+\dpicdraw (1.48,-0.69875)
+ --(1.71,-0.69875)\dpicstop
+\dpicdraw[fill=white](1.668333,-0.80125) circle (0.007874in)\dpicstop
+\draw (1.575,-1.000694) node{\tt (OI)};
+\dpicdraw[fill=white](2.18,-0.762778) circle (0.007874in)\dpicstop
+\dpicdraw (2.2,-0.762778)
+ --(2.43,-0.762778)\dpicstop
+\dpicdraw[fill=white](2.388333,-0.737222) circle (0.007874in)\dpicstop
+\draw (2.295,-1.000694) node{\tt (CI)};
+\dpicdraw[fill=white](2.9,-0.75) circle (0.007874in)\dpicstop
+\dpicdraw[fill=white](3.108333,-0.641944) circle (0.007874in)\dpicstop
+\dpicdraw[fill=white](3.108333,-0.858056) circle (0.007874in)\dpicstop
+\dpicdraw (2.92,-0.75)
+ --(3.15,-0.75)\dpicstop
+\draw (3.015,-1.000694) node{\tt (PI)};
+\draw (3.128333,-0.858056) node[right=-2bp]{\sl O};
+\draw (3.128333,-0.641944) node[right=-2bp]{\sl C};
+\dpicdraw[fill=white](3.62,-0.75) circle (0.007874in)\dpicstop
+\dpicdraw[fill=white](3.828333,-0.641944) circle (0.007874in)\dpicstop
+\dpicdraw[fill=white](3.828333,-0.858056) circle (0.007874in)\dpicstop
+\dpicdraw (3.638651,-0.75722)
+ --(3.856211,-0.841444)\dpicstop
+\draw (3.728105,-1.000694) node{\tt (PIO)};
+\dpicdraw[fill=white](4.326211,-0.75) circle (0.007874in)\dpicstop
+\dpicdraw[fill=white](4.534544,-0.641944) circle (0.007874in)\dpicstop
+\dpicdraw[fill=white](4.534544,-0.858056) circle (0.007874in)\dpicstop
+\dpicdraw (4.344862,-0.74278)
+ --(4.562421,-0.658556)\dpicstop
+\draw (4.434316,-1.000694) node{\tt (PIC)};
+\dpicdraw[fill=white](0.02,-1.36875) circle (0.007874in)\dpicstop
+\dpicdraw (0.04,-1.36875)
+ --(0.27,-1.36875)\dpicstop
+\dpicdraw (0.228333,-1.382639)
+ --(0.228333,-1.299306)\dpicstop
+\dpicdraw (0.228333,-1.500694)
+ --(0.228333,-1.417361)\dpicstop
+\draw (0.135,-1.650694) node{\tt (T)};
+\dpiclw=0.4bp
+\filldraw[line width=0bp](0.295,-1.320972)
+ --(0.228333,-1.340972)
+ --(0.295,-1.360972) --cycle\dpicstop
+\dpicdraw (0.247667,-1.340972)
+ --(0.283,-1.340972)
+ ..controls (0.306556,-1.340972) and (0.326667,-1.332639)
+ ..(0.343333,-1.315972)
+ --(0.368333,-1.290972)\dpicstop
+\draw (0.368333,-1.290972) node{$\;\;$\sl C};
+\filldraw[line width=0bp](0.295,-1.439028)
+ --(0.228333,-1.459028)
+ --(0.295,-1.479028) --cycle\dpicstop
+\dpicdraw (0.247667,-1.459028)
+ --(0.283,-1.459028)
+ ..controls (0.306556,-1.459028) and (0.326667,-1.467361)
+ ..(0.343333,-1.484028)
+ --(0.368333,-1.509028)\dpicstop
+\draw (0.368333,-1.509028) node{$\;\;$\sl O};
+\dpiclw=0.8bp
+\dpicdraw[fill=white](0.74,-1.43125) circle (0.007874in)\dpicstop
+\dpicdraw (0.76,-1.43125)
+ --(0.99,-1.43125)\dpicstop
+\dpicdraw (0.948333,-1.500694)
+ --(0.948333,-1.417361)\dpicstop
+\dpicdraw (0.948333,-1.382639)
+ --(0.948333,-1.299306)\dpicstop
+\draw (0.855,-1.650694) node{\tt (RT)};
+\dpiclw=0.4bp
+\filldraw[line width=0bp](1.015,-1.320972)
+ --(0.948333,-1.340972)
+ --(1.015,-1.360972) --cycle\dpicstop
+\dpicdraw (0.967667,-1.340972)
+ --(1.003,-1.340972)
+ ..controls (1.026556,-1.340972) and (1.046667,-1.332639)
+ ..(1.063333,-1.315972)
+ --(1.088333,-1.290972)\dpicstop
+\draw (1.088333,-1.290972) node{$\;\;$\sl O};
+\filldraw[line width=0bp](1.015,-1.439028)
+ --(0.948333,-1.459028)
+ --(1.015,-1.479028) --cycle\dpicstop
+\dpicdraw (0.967667,-1.459028)
+ --(1.003,-1.459028)
+ ..controls (1.026556,-1.459028) and (1.046667,-1.467361)
+ ..(1.063333,-1.484028)
+ --(1.088333,-1.509028)\dpicstop
+\draw (1.088333,-1.509028) node{$\;\;$\sl C};
+\dpiclw=0.8bp
+\dpicdraw[fill=white](1.46,-1.344028) circle (0.007874in)\dpicstop
+\dpicdraw (1.48,-1.344028)
+ --(1.71,-1.344028)\dpicstop
+\dpicdraw (1.668333,-1.475972)
+ --(1.668333,-1.392639)\dpicstop
+\draw (1.575,-1.650694) node{\tt (OT)};
+\dpicdraw[fill=white](2.18,-1.424722) circle (0.007874in)\dpicstop
+\dpicdraw (2.2,-1.424722)
+ --(2.43,-1.424722)\dpicstop
+\dpicdraw (2.388333,-1.438611)
+ --(2.388333,-1.355278)\dpicstop
+\draw (2.295,-1.650694) node{\tt (CT)};
+\dpicdraw[fill=white](2.9,-1.4) circle (0.007874in)\dpicstop
+\dpicdraw (3.108333,-1.351389)
+ --(3.108333,-1.268056)\dpicstop
+\dpicdraw (3.108333,-1.531944)
+ --(3.108333,-1.448611)\dpicstop
+\dpicdraw (2.92,-1.4)
+ --(3.15,-1.4)\dpicstop
+\draw (3.015,-1.650694) node{\tt (PT)};
+\dpicdraw[fill=white](3.62,-1.4) circle (0.007874in)\dpicstop
+\dpicdraw (3.828333,-1.351389)
+ --(3.828333,-1.268056)\dpicstop
+\dpicdraw (3.828333,-1.531944)
+ --(3.828333,-1.448611)\dpicstop
+\dpicdraw (3.639157,-1.405747)
+ --(3.84749,-1.468247)\dpicstop
+\draw (3.723745,-1.650694) node{\tt (PTO)};
+\dpicdraw[fill=white](4.31749,-1.4) circle (0.007874in)\dpicstop
+\dpicdraw (4.525823,-1.351389)
+ --(4.525823,-1.268056)\dpicstop
+\dpicdraw (4.525823,-1.531944)
+ --(4.525823,-1.448611)\dpicstop
+\dpicdraw (4.336646,-1.394253)
+ --(4.54498,-1.331753)\dpicstop
+\draw (4.421235,-1.650694) node{\tt (PTC)};
+\dpicdraw[fill=white](0.02,-2.05) circle (0.007874in)\dpicstop
+\dpicdraw (0.04,-2.05)
+ --(0.27,-2.05)\dpicstop
+\dpicdraw (0.311667,-1.966667)
+ --(0.228333,-1.966667)\dpicstop
+\dpicdraw (0.311667,-2.133333)
+ --(0.228333,-2.133333)\dpicstop
+\draw (0.155833,-2.283333) node{\tt (U)};
+\dpiclw=0.4bp
+\filldraw[line width=0bp](0.378333,-1.946667)
+ --(0.311667,-1.966667)
+ --(0.378333,-1.986667) --cycle\dpicstop
+\dpicdraw (0.331001,-1.966667)
+ --(0.366334,-1.966667)
+ ..controls (0.389889,-1.966667) and (0.41,-1.958333)
+ ..(0.426667,-1.941667)
+ --(0.451667,-1.916667)\dpicstop
+\draw (0.451667,-1.916667) node{$\;\;$\sl C};
+\filldraw[line width=0bp](0.378333,-2.113333)
+ --(0.311667,-2.133333)
+ --(0.378333,-2.153333) --cycle\dpicstop
+\dpicdraw (0.331001,-2.133333)
+ --(0.366334,-2.133333)
+ ..controls (0.389889,-2.133333) and (0.41,-2.141667)
+ ..(0.426667,-2.158333)
+ --(0.451667,-2.183333)\dpicstop
+\draw (0.451667,-2.183333) node{$\;\;$\sl O};
+\dpiclw=0.8bp
+\dpicdraw[fill=white](0.781667,-2.05) circle (0.007874in)\dpicstop
+\dpicdraw (0.801667,-2.05)
+ --(1.031667,-2.05)\dpicstop
+\dpicdraw (1.073333,-2.133333)
+ --(0.99,-2.133333)\dpicstop
+\dpicdraw (1.073333,-1.966667)
+ --(0.99,-1.966667)\dpicstop
+\draw (0.9175,-2.283333) node{\tt (RU)};
+\dpiclw=0.4bp
+\filldraw[line width=0bp](1.14,-1.946667)
+ --(1.073333,-1.966667)
+ --(1.14,-1.986667) --cycle\dpicstop
+\dpicdraw (1.092667,-1.966667)
+ --(1.128,-1.966667)
+ ..controls (1.151556,-1.966667) and (1.171667,-1.958333)
+ ..(1.188333,-1.941667)
+ --(1.213333,-1.916667)\dpicstop
+\draw (1.213333,-1.916667) node{$\;\;$\sl O};
+\filldraw[line width=0bp](1.14,-2.113333)
+ --(1.073333,-2.133333)
+ --(1.14,-2.153333) --cycle\dpicstop
+\dpicdraw (1.092667,-2.133333)
+ --(1.128,-2.133333)
+ ..controls (1.151556,-2.133333) and (1.171667,-2.141667)
+ ..(1.188333,-2.158333)
+ --(1.213333,-2.183333)\dpicstop
+\draw (1.213333,-2.183333) node{$\;\;$\sl C};
+\dpiclw=0.8bp
+\dpicdraw[fill=white](1.543333,-2.018333) circle (0.007874in)\dpicstop
+\dpicdraw (1.563333,-2.018333)
+ --(1.793333,-2.018333)\dpicstop
+\dpicdraw (1.835,-2.101667)
+ --(1.751667,-2.101667)\dpicstop
+\draw (1.679167,-2.283333) node{\tt (OU)};
+\draw (1.835,-2.101667) node[right=-2bp]{\sl O};
+\dpicdraw[fill=white](2.305,-2.081667) circle (0.007874in)\dpicstop
+\dpicdraw (2.325,-2.081667)
+ --(2.555,-2.081667)\dpicstop
+\dpicdraw (2.596667,-1.998333)
+ --(2.513333,-1.998333)\dpicstop
+\draw (2.440833,-2.283333) node{\tt (CU)};
+\draw (2.596667,-1.998333) node[right=-2bp]{\sl C};
+\dpicdraw[fill=white](3.066667,-2.05) circle (0.007874in)\dpicstop
+\dpicdraw (3.358333,-1.966667)
+ --(3.275,-1.966667)\dpicstop
+\dpicdraw (3.358333,-2.133333)
+ --(3.275,-2.133333)\dpicstop
+\dpicdraw (3.086667,-2.05)
+ --(3.316667,-2.05)\dpicstop
+\draw (3.2025,-2.283333) node{\tt (PU)};
+\dpicdraw[fill=white](3.828333,-2.046552) circle (0.007874in)\dpicstop
+\dpicdraw (4.12,-1.963218)
+ --(4.036667,-1.963218)\dpicstop
+\dpicdraw (4.12,-2.129885)
+ --(4.036667,-2.129885)\dpicstop
+\dpicdraw (3.847107,-2.053448)
+ --(4.073959,-2.136782)\dpicstop
+\draw (3.964167,-2.283333) node{\tt (PUO)};
+\dpicdraw[fill=white](4.59,-2.053448) circle (0.007874in)\dpicstop
+\dpicdraw (4.881667,-1.970115)
+ --(4.798333,-1.970115)\dpicstop
+\dpicdraw (4.881667,-2.136782)
+ --(4.798333,-2.136782)\dpicstop
+\dpicdraw (4.608773,-2.046552)
+ --(4.835625,-1.963218)\dpicstop
+\draw (4.725833,-2.283333) node(S){\tt (PUC)};
+\end{tikzpicture}
+\vspace*{-0.5\baselineskip}
diff --git a/graphics/circuit_macros/doc/Contact.m4 b/graphics/circuit_macros/doc/ContactMan.m4
index 26f8d5a982..26f8d5a982 100644
--- a/graphics/circuit_macros/doc/Contact.m4
+++ b/graphics/circuit_macros/doc/ContactMan.m4
diff --git a/graphics/circuit_macros/doc/Contacts.tex b/graphics/circuit_macros/doc/Contacts.tex
new file mode 100644
index 0000000000..2d9d5c5a6d
--- /dev/null
+++ b/graphics/circuit_macros/doc/Contacts.tex
@@ -0,0 +1,141 @@
+\begin{tikzpicture}[scale=2.54]
+% dpic version 2020.03.01 option -g for TikZ and PGF 1.01
+\ifx\dpiclw\undefined\newdimen\dpiclw\fi
+\global\def\dpicdraw{\draw[line width=\dpiclw]}
+\global\def\dpicstop{;}
+\dpiclw=0.8bp
+\dpiclw=0.8bp
+\dpicdraw[fill=white](0.02,-0.1875) circle (0.007874in)\dpicstop
+\dpicdraw (0.04,-0.1875)
+ --(0.27,-0.1875)\dpicstop
+\filldraw[line width=0bp](0.186667,-0.104167)
+ --(0.228333,-0.1875)
+ --(0.27,-0.104167) --cycle\dpicstop
+\dpicdraw (0.228333,-0.175077)
+ --(0.228333,-0.0625)
+ --(0.328333,-0.0625)\dpicstop
+\filldraw[line width=0bp](0.27,-0.333333)
+ --(0.228333,-0.25)
+ --(0.186667,-0.333333) --cycle\dpicstop
+\dpicdraw (0.228333,-0.262423)
+ --(0.228333,-0.375)
+ --(0.328333,-0.375)\dpicstop
+\dpicdraw[fill=white](0.02,0.25) circle (0.007874in)\dpicstop
+\dpicdraw (0.04,0.25)
+ --(0.27,0.25)\dpicstop
+\filldraw[line width=0bp](0.186667,0.333333)
+ --(0.228333,0.25)
+ --(0.27,0.333333) --cycle\dpicstop
+\dpicdraw (0.228333,0.262423)
+ --(0.228333,0.375)
+ --(0.328333,0.375)\dpicstop
+\filldraw[line width=0bp](0.27,0.104167)
+ --(0.228333,0.1875)
+ --(0.186667,0.104167) --cycle\dpicstop
+\dpicdraw (0.228333,0.175077)
+ --(0.228333,0.0625)
+ --(0.328333,0.0625)\dpicstop
+\draw (0.164167,-0.583333) node{\tt contacts(2)};
+\draw (0,-0.1875) node[left=-2bp]{\sl P1};
+\draw (0.348333,-0.375) node[right=-2bp]{\sl O1};
+\draw (0.348333,-0.0625) node[right=-2bp]{\sl C1};
+\draw (0,0.25) node[left=-2bp]{\sl P2};
+\draw (0.348333,0.0625) node[right=-2bp]{\sl O2};
+\draw (0.348333,0.375) node[right=-2bp]{\sl C2};
+\dpicdraw[fill=white](1.098333,-0.294167) circle (0.007874in)\dpicstop
+\dpicdraw (1.118333,-0.294167)
+ --(1.348333,-0.294167)\dpicstop
+\dpicdraw[fill=white](1.306667,-0.268611) circle (0.007874in)\dpicstop
+\dpicdraw[fill=white](1.306667,-0.396667) circle (0.007874in)\dpicstop
+\dpicdraw[fill=white](1.098333,-0.041111) circle (0.007874in)\dpicstop
+\dpicdraw (1.118333,-0.041111)
+ --(1.348333,-0.041111)\dpicstop
+\dpicdraw[fill=white](1.306667,-0.015556) circle (0.007874in)\dpicstop
+\dpicdraw[fill=white](1.306667,-0.143611) circle (0.007874in)\dpicstop
+\draw (1.213333,-0.583333) node{\tt (2,I)};
+\draw (1.078333,-0.294167) node[left=-2bp]{\sl P1};
+\draw (1.326667,-0.396667) node[right=-2bp]{\sl O1};
+\draw (1.326667,-0.268611) node[right=-2bp]{\sl C1};
+\draw (1.078333,-0.041111) node[left=-2bp]{\sl P2};
+\draw (1.326667,-0.143611) node[right=-2bp]{\sl O2};
+\draw (1.326667,-0.015556) node[right=-2bp]{\sl C2};
+\dpicdraw[fill=white](2.118333,-0.294167) circle (0.007874in)\dpicstop
+\dpicdraw (2.138333,-0.294167)
+ --(2.368333,-0.294167)\dpicstop
+\dpicdraw[fill=white](2.326667,-0.396667) circle (0.007874in)\dpicstop
+\dpicdraw[fill=white](2.118333,-0.066667) circle (0.007874in)\dpicstop
+\dpicdraw (2.138333,-0.066667)
+ --(2.368333,-0.066667)\dpicstop
+\dpicdraw[fill=white](2.326667,-0.169167) circle (0.007874in)\dpicstop
+\draw (2.233333,-0.583333) node{\tt (2,IO)};
+\draw (2.098333,-0.294167) node[left=-2bp]{\sl P1};
+\draw (2.346667,-0.396667) node[right=-2bp]{\sl O1};
+\draw (2.098333,-0.066667) node[left=-2bp]{\sl P2};
+\draw (2.346667,-0.169167) node[right=-2bp]{\sl O2};
+\dpicdraw[fill=white](3.138333,-0.288611) circle (0.007874in)\dpicstop
+\dpicdraw[fill=white](3.346667,-0.180556) circle (0.007874in)\dpicstop
+\dpicdraw[fill=white](3.346667,-0.396667) circle (0.007874in)\dpicstop
+\dpicdraw (3.156984,-0.281391)
+ --(3.374544,-0.197167)\dpicstop
+\dpicdraw[fill=white](3.138333,0.0525) circle (0.007874in)\dpicstop
+\dpicdraw[fill=white](3.346667,0.160556) circle (0.007874in)\dpicstop
+\dpicdraw[fill=white](3.346667,-0.055556) circle (0.007874in)\dpicstop
+\dpicdraw (3.156984,0.05972)
+ --(3.374544,0.143944)\dpicstop
+\dpicdraw[dash pattern=on 0.05in off 0.05in](3.265764,-0.289279)
+ --(3.265764,0.151832)\dpicstop
+\draw (3.246439,-0.583333) node{\tt (2,PICD)};
+\draw (3.118333,-0.288611) node[left=-2bp]{\sl P1};
+\draw (3.366667,-0.396667) node[right=-2bp]{\sl O1};
+\draw (3.366667,-0.180556) node[right=-2bp]{\sl C1};
+\draw (3.118333,0.0525) node[left=-2bp]{\sl P2};
+\draw (3.366667,-0.055556) node[right=-2bp]{\sl O2};
+\draw (3.366667,0.160556) node[right=-2bp]{\sl C2};
+\dpicdraw[fill=white](4.144544,-0.284722) circle (0.007874in)\dpicstop
+\dpicdraw (4.352877,-0.236111)
+ --(4.352877,-0.152778)\dpicstop
+\dpicdraw (4.352877,-0.416667)
+ --(4.352877,-0.333333)\dpicstop
+\dpicdraw (4.1637,-0.278975)
+ --(4.372034,-0.216475)\dpicstop
+\dpicdraw[fill=white](4.144544,0.020833) circle (0.007874in)\dpicstop
+\dpicdraw (4.352877,0.069444)
+ --(4.352877,0.152778)\dpicstop
+\dpicdraw (4.352877,-0.111111)
+ --(4.352877,-0.027778)\dpicstop
+\dpicdraw (4.1637,0.02658)
+ --(4.372034,0.08908)\dpicstop
+\dpicdraw[dash pattern=on 0.05in off 0.05in](4.267867,-0.297725)
+ --(4.267867,0.10783)\dpicstop
+\draw (4.248289,-0.583333) node{\tt (2,PTCD)};
+\draw (4.124544,-0.284722) node[left=-2bp]{\sl P1};
+\draw (4.372877,-0.375) node[right=-2bp]{\sl O1};
+\draw (4.372877,-0.194444) node[right=-2bp]{\sl C1};
+\draw (4.124544,0.020833) node[left=-2bp]{\sl P2};
+\draw (4.372877,-0.069444) node[right=-2bp]{\sl O2};
+\draw (4.372877,0.111111) node[right=-2bp]{\sl C2};
+\dpicdraw[fill=white](5.142034,-0.333333) circle (0.007874in)\dpicstop
+\dpicdraw (5.4337,-0.25)
+ --(5.350367,-0.25)\dpicstop
+\dpicdraw (5.4337,-0.416667)
+ --(5.350367,-0.416667)\dpicstop
+\dpicdraw (5.160807,-0.326437)
+ --(5.387659,-0.243104)\dpicstop
+\dpicdraw[fill=white](5.142034,-0.041667) circle (0.007874in)\dpicstop
+\dpicdraw (5.4337,0.041667)
+ --(5.350367,0.041667)\dpicstop
+\dpicdraw (5.4337,-0.125)
+ --(5.350367,-0.125)\dpicstop
+\dpicdraw (5.160807,-0.03477)
+ --(5.387659,0.048563)\dpicstop
+\dpicdraw[dash pattern=on 0.05in off 0.05in](5.274233,-0.33477)
+ --(5.274233,0.056896)\dpicstop
+\draw (5.277867,-0.583333) node{\tt (2,PUCD)};
+\draw (5.122034,-0.333333) node[left=-2bp]{\sl P1};
+\draw (5.4537,-0.416667) node[right=-2bp]{\sl O1};
+\draw (5.4537,-0.25) node[right=-2bp]{\sl C1};
+\draw (5.122034,-0.041667) node[left=-2bp]{\sl P2};
+\draw (5.4537,-0.125) node[right=-2bp]{\sl O2};
+\draw (5.4537,0.041667) node[right=-2bp]{\sl C2};
+\end{tikzpicture}
+\vspace*{-0.5\baselineskip}
diff --git a/graphics/circuit_macros/doc/Contacts.m4 b/graphics/circuit_macros/doc/ContactsMan.m4
index 9e006218e3..9e006218e3 100644
--- a/graphics/circuit_macros/doc/Contacts.m4
+++ b/graphics/circuit_macros/doc/ContactsMan.m4
diff --git a/graphics/circuit_macros/doc/Demultiplexer.tex b/graphics/circuit_macros/doc/Demultiplexer.tex
new file mode 100644
index 0000000000..e6e5ec9848
--- /dev/null
+++ b/graphics/circuit_macros/doc/Demultiplexer.tex
@@ -0,0 +1,148 @@
+\begin{tikzpicture}[scale=2.54]
+% dpic version 2020.03.01 option -g for TikZ and PGF 1.01
+\ifx\dpiclw\undefined\newdimen\dpiclw\fi
+\global\def\dpicdraw{\draw[line width=\dpiclw]}
+\global\def\dpicstop{;}
+\dpiclw=0.8bp
+\dpiclw=0.8bp
+{\sf
+\dpicdraw (0.2,0.075)
+ --(0.2,0.425)
+ --(0.6,0.525)
+ --(0.6,-0.375)
+ --(0.2,-0.275)
+ --(0.2,0.075)\dpicstop
+\draw (0.4,0.075) node{\scriptsize DM1};
+\dpicdraw (0.2,0.075)
+ --(0,0.075)\dpicstop
+\dpicdraw (0.4,-0.325)
+ --(0.4,-0.525)\dpicstop
+\draw (0.6,0.4125) node[left=-2bp]{{\scriptsize 0}};
+\dpicdraw (0.6,0.4125)
+ --(0.8,0.4125)\dpicstop
+\draw (0.6,0.1875) node[left=-2bp]{{\scriptsize 1}};
+\dpicdraw (0.6,0.1875)
+ --(0.8,0.1875)\dpicstop
+\draw (0.6,-0.0375) node[left=-2bp]{{\scriptsize 2}};
+\dpicdraw (0.6,-0.0375)
+ --(0.8,-0.0375)\dpicstop
+\draw (0.6,-0.2625) node[left=-2bp]{{\scriptsize 3}};
+\dpicdraw (0.6,-0.2625)
+ --(0.8,-0.2625)\dpicstop
+\draw (0.4,-0.525) node[below=-2bp]{\tt Demux(4,DM1)};
+\draw (0.883333,0.495833) node{\sl Out0};
+\draw (0.883333,-0.345833) node{\sl Out3};
+\draw (0,0.075) node[left=-2bp]{\sl In};
+\draw (0.4,-0.525) node[above right=-2bp]{\sl Sel};
+\dpicdraw (1.8,-0.075)
+ --(1.8,-0.425)
+ --(1.4,-0.525)
+ --(1.4,0.375)
+ --(1.8,0.275)
+ --(1.8,-0.075)\dpicstop
+\dpicdraw (1.8,-0.075)
+ --(2,-0.075)\dpicstop
+\dpicdraw (1.6,0.325)
+ --(1.6,0.525)\dpicstop
+\draw (1.4,0.2625) node[right=-2bp]{{\scriptsize 0}};
+\dpicdraw (1.4,0.2625)
+ --(1.2,0.2625)\dpicstop
+\draw (1.4,0.0375) node[right=-2bp]{{\scriptsize 1}};
+\dpicdraw (1.4,0.0375)
+ --(1.2,0.0375)\dpicstop
+\draw (1.4,-0.1875) node[right=-2bp]{{\scriptsize 2}};
+\dpicdraw (1.4,-0.1875)
+ --(1.2,-0.1875)\dpicstop
+\draw (1.4,-0.4125) node[right=-2bp]{{\scriptsize 3}};
+\dpicdraw (1.4,-0.4125)
+ --(1.2,-0.4125)\dpicstop
+\draw (1.8,0.15) node[left=-2bp]{{\scriptsize OE}};
+\dpicdraw (1.8,0.15)
+ --(2,0.15)\dpicstop
+\draw (1.6,-0.802778) node{\tt left\_; Demux(4,{,}LOE)};
+\draw (1.6,0.525) node[left=-2bp]{\sl Sel};
+\draw (1.116667,0.345833) node{\sl Out0};
+\draw (2,0.15) node[right=-2bp]{\sl OE};
+\draw (2,-0.005556) node[right=-2bp]{\sl In};
+\dpicdraw (2.6,-0.0875)
+ --(2.6,0.2625)
+ --(3,0.3625)
+ --(3,-0.5375)
+ --(2.6,-0.4375)
+ --(2.6,-0.0875)\dpicstop
+\dpicdraw (2.6,-0.0875)
+ --(2.4,-0.0875)\dpicstop
+\dpicdraw (2.7,0.2875)
+ --(2.7,0.4875)\dpicstop
+\dpicdraw (2.9,0.3375)
+ --(2.9,0.5375)\dpicstop
+\draw (3,0.25) node[left=-2bp]{{\scriptsize 00}};
+\dpicdraw (3,0.25)
+ --(3.2,0.25)\dpicstop
+\draw (3,0.025) node[left=-2bp]{{\scriptsize 01}};
+\dpicdraw (3,0.025)
+ --(3.2,0.025)\dpicstop
+\draw (3,-0.2) node[left=-2bp]{{\scriptsize 10}};
+\dpicdraw (3,-0.2)
+ --(3.2,-0.2)\dpicstop
+\draw (3,-0.425) node[left=-2bp]{{\scriptsize 11}};
+\dpicdraw (3,-0.425)
+ --(3.2,-0.425)\dpicstop
+\draw (2.6,-0.3125) node[right=-2bp]{{\scriptsize $\overline{\hbox{OE}}$}};
+\dpicdraw (2.5625,-0.3125) circle (0.014764in)\dpicstop
+\dpicdraw (2.525,-0.3125)
+ --(2.4,-0.3125)\dpicstop
+\draw (2.8,-0.5375) node[below=-2bp]{\tt (4,{,}NOEBN2)};
+\draw (2.7,0.4875) node[left=-2bp]{\sl Sel0};
+\draw (2.9,0.5375) node[right=-2bp]{\sl Sel1};
+\draw (3.269444,0.333333) node{\sl Out0};
+\draw (3.269444,-0.341667) node{\sl Out3};
+\draw (2.4,-0.3125) node[left=-2bp]{\sl NOE};
+\draw (2.4,-0.0875) node[above=-2bp]{\sl In};
+\dpicdraw (4.691667,0.2)
+ --(5.291667,0.2)
+ --(5.391667,-0.2)
+ --(3.991667,-0.2)
+ --(4.091667,0.2)
+ --(4.691667,0.2)\dpicstop
+\dpicdraw (4.691667,0.2)
+ --(4.691667,0.4)\dpicstop
+\dpicdraw (4.075,0.133333)
+ --(3.875,0.133333)\dpicstop
+\dpicdraw (4.041667,0)
+ --(3.841667,0)\dpicstop
+\dpicdraw (4.008333,-0.133333)
+ --(3.808333,-0.133333)\dpicstop
+\draw (4.079167,-0.2) node[above=-2bp]{{\scriptsize 0}};
+\dpicdraw (4.079167,-0.2)
+ --(4.079167,-0.4)\dpicstop
+\draw (4.254167,-0.2) node[above=-2bp]{{\scriptsize 1}};
+\dpicdraw (4.254167,-0.2)
+ --(4.254167,-0.4)\dpicstop
+\draw (4.429167,-0.2) node[above=-2bp]{{\scriptsize 2}};
+\dpicdraw (4.429167,-0.2)
+ --(4.429167,-0.4)\dpicstop
+\draw (4.604167,-0.2) node[above=-2bp]{{\scriptsize 3}};
+\dpicdraw (4.604167,-0.2)
+ --(4.604167,-0.4)\dpicstop
+\draw (4.779167,-0.2) node[above=-2bp]{{\scriptsize 4}};
+\dpicdraw (4.779167,-0.2)
+ --(4.779167,-0.4)\dpicstop
+\draw (4.954167,-0.2) node[above=-2bp]{{\scriptsize 5}};
+\dpicdraw (4.954167,-0.2)
+ --(4.954167,-0.4)\dpicstop
+\draw (5.129167,-0.2) node[above=-2bp]{{\scriptsize 6}};
+\dpicdraw (5.129167,-0.2)
+ --(5.129167,-0.4)\dpicstop
+\draw (5.304167,-0.2) node[above=-2bp]{{\scriptsize 7}};
+\dpicdraw (5.304167,-0.2)
+ --(5.304167,-0.4)\dpicstop
+\draw (4.6,-0.608333) node{\tt down\_; Demux(8,{,}L3,{,}28*L\_unit)};
+\draw (3.875,0.133333) node[left=-2bp]{\sl Sel0};
+\draw (3.808333,-0.133333) node[below left=-2bp]{\sl Sel2};
+\draw (4.079167,-0.4) node[left=-2bp]{\sl Out0};
+\draw (5.304167,-0.4) node[right=-2bp]{\sl Out7};
+\draw (4.691667,0.4) node[left=-2bp]{\sl In};
+}
+\end{tikzpicture}
+\vspace*{-0.5\baselineskip}
diff --git a/graphics/circuit_macros/doc/Demultiplexer.m4 b/graphics/circuit_macros/doc/DemultiplexerMan.m4
index 210b643441..210b643441 100644
--- a/graphics/circuit_macros/doc/Demultiplexer.m4
+++ b/graphics/circuit_macros/doc/DemultiplexerMan.m4
diff --git a/graphics/circuit_macros/doc/Diodes.tex b/graphics/circuit_macros/doc/Diodes.tex
new file mode 100644
index 0000000000..a628327c27
--- /dev/null
+++ b/graphics/circuit_macros/doc/Diodes.tex
@@ -0,0 +1,383 @@
+\begin{tikzpicture}[scale=2.54]
+% dpic version 2020.03.01 option -g for TikZ and PGF 1.01
+\ifx\dpiclw\undefined\newdimen\dpiclw\fi
+\global\def\dpicdraw{\draw[line width=\dpiclw]}
+\global\def\dpicstop{;}
+\dpiclw=0.8bp
+\dpiclw=0.8bp
+\dpicdraw (0,0)
+ --(0.338916,0)\dpicstop
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!0!black]
+\dpicdraw (0.338916,0)
+ --(0.338916,0.041667)
+ --(0.40555,0)
+ --(0.338916,-0.041667)
+ --(0.338916,0)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\dpicdraw (0.411084,-0.045718)
+ --(0.411084,0.045718)\dpicstop
+\dpicdraw (0.411084,0)
+ --(0.75,0)\dpicstop
+\draw (0.777674,0) node[right=-2bp]{{\tt diode}};
+\dpicdraw (0,-0.2)
+ --(0.338916,-0.2)\dpicstop
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!0!black]
+\dpicdraw (0.338916,-0.2)
+ --(0.338916,-0.158333)
+ --(0.40555,-0.2)
+ --(0.338916,-0.241667)
+ --(0.338916,-0.2)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\dpicdraw (0.390251,-0.227778)
+ --(0.390251,-0.245718)
+ --(0.411084,-0.245718)
+ --(0.411084,-0.154282)
+ --(0.431918,-0.154282)
+ --(0.431918,-0.172222)\dpicstop
+\dpicdraw (0.411084,-0.2)
+ --(0.75,-0.2)\dpicstop
+\draw (0.777674,-0.2) node[right=-2bp]{{\tt diode(,S)}};
+\dpicdraw (0,-0.4)
+ --(0.338916,-0.4)\dpicstop
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!0!black]
+\dpicdraw (0.338916,-0.4)
+ --(0.338916,-0.358333)
+ --(0.40555,-0.4)
+ --(0.338916,-0.441667)
+ --(0.338916,-0.4)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\dpicdraw (0.411084,-0.445718)
+ --(0.411084,-0.354282)\dpicstop
+\dpicdraw (0.431918,-0.445718)
+ --(0.431918,-0.354282)\dpicstop
+\dpicdraw (0.431918,-0.4)
+ --(0.75,-0.4)\dpicstop
+\draw (0.777674,-0.4) node[right=-2bp]{{\tt diode(,V)}};
+\dpicdraw (0,-0.6)
+ --(0.338916,-0.6)\dpicstop
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!0!black]
+\dpicdraw (0.338916,-0.6)
+ --(0.338916,-0.558333)
+ --(0.40555,-0.6)
+ --(0.338916,-0.641667)
+ --(0.338916,-0.6)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\dpicdraw (0.411084,-0.645718)
+ --(0.411084,-0.554282)\dpicstop
+\dpicdraw (0.438862,-0.645718)
+ ..controls (0.421179,-0.617804) and (0.421179,-0.582196)
+ ..(0.438862,-0.554282)\dpicstop
+\dpicdraw (0.4256,-0.6)
+ --(0.431918,-0.6)\dpicstop
+\dpicdraw (0.431918,-0.6)
+ --(0.75,-0.6)\dpicstop
+\draw (0.777674,-0.6) node[right=-2bp]{{\tt diode(,v)}};
+\dpicdraw (0,-0.8)
+ --(0.338916,-0.8)\dpicstop
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!0!black]
+\dpicdraw (0.338916,-0.8)
+ --(0.338916,-0.758333)
+ --(0.40555,-0.8)
+ --(0.338916,-0.841667)
+ --(0.338916,-0.8)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\dpicdraw (0.397822,-0.754282)
+ ..controls (0.415505,-0.782196) and (0.415505,-0.817804)
+ ..(0.397822,-0.845718)\dpicstop
+\dpicdraw (0.431918,-0.845718)
+ --(0.431918,-0.754282)\dpicstop
+\dpicdraw (0.431918,-0.8)
+ --(0.75,-0.8)\dpicstop
+\draw (0.777674,-0.8) node[right=-2bp]{{\tt diode(,w)}};
+\dpicdraw (0,-1)
+ --(0.302831,-1)\dpicstop
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!0!black]
+\dpicdraw (0.302831,-1)
+ --(0.302831,-0.958333)
+ --(0.369465,-1)
+ --(0.302831,-1.041667)
+ --(0.302831,-1)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\dpicdraw (0.354167,-1.045718)
+ --(0.375,-1.045718)
+ --(0.375,-0.954282)
+ --(0.395833,-0.954282)\dpicstop
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!0!black]
+\dpicdraw (0.447169,-1)
+ --(0.447169,-0.958333)
+ --(0.380535,-1)
+ --(0.447169,-1.041667)
+ --(0.447169,-1)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\dpicdraw (0.447169,-1)
+ --(0.75,-1)\dpicstop
+\draw (0.777674,-1) node[right=-2bp]{{\tt diode(,B)}};
+\dpicdraw (0,-1.2)
+ --(0.302831,-1.2)\dpicstop
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!0!black]
+\dpicdraw (0.302831,-1.2)
+ --(0.302831,-1.158333)
+ --(0.369465,-1.2)
+ --(0.302831,-1.241667)
+ --(0.302831,-1.2)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!0!black]
+\dpicdraw (0.447169,-1.2)
+ --(0.447169,-1.158333)
+ --(0.380535,-1.2)
+ --(0.447169,-1.241667)
+ --(0.447169,-1.2)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\dpicdraw (0.447169,-1.2)
+ --(0.75,-1.2)\dpicstop
+\draw (0.777674,-1.2) node[right=-2bp]{{\tt diode(,G)}};
+\dpicdraw (2,0)
+ --(2.338916,0)\dpicstop
+\dpicdraw (2.338916,0)
+ --(2.338916,0.041667)
+ --(2.40555,0)
+ --(2.338916,-0.041667)
+ --(2.338916,0)\dpicstop
+\dpicdraw (2.411084,-0.045718)
+ --(2.411084,0.045718)\dpicstop
+\dpicdraw (2.411084,0)
+ --(2.75,0)\dpicstop
+\draw (2.777674,0) node[right=-2bp]{{\tt diode(,K)}};
+\dpicdraw (2,-0.2)
+ --(2.338916,-0.2)\dpicstop
+\dpicdraw (2.338916,-0.2)
+ --(2.338916,-0.158333)
+ --(2.40555,-0.2)
+ --(2.338916,-0.241667)
+ --(2.338916,-0.2)\dpicstop
+\dpicdraw (2.390251,-0.245718)
+ --(2.411084,-0.245718)
+ --(2.411084,-0.154282)
+ --(2.431918,-0.154282)\dpicstop
+\dpicdraw (2.411084,-0.2)
+ --(2.75,-0.2)\dpicstop
+\draw (2.777674,-0.2) node[right=-2bp]{{\tt diode(,ZK)}};
+\dpicdraw (2,-0.4)
+ --(2.338916,-0.4)\dpicstop
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!0!black]
+\dpicdraw (2.338916,-0.4)
+ --(2.338916,-0.358333)
+ --(2.40555,-0.4)
+ --(2.338916,-0.441667)
+ --(2.338916,-0.4)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\dpicdraw (2.411084,-0.445718)
+ --(2.411084,-0.354282)\dpicstop
+\dpicdraw (2.390251,-0.445718)
+ --(2.431918,-0.445718)\dpicstop
+\dpicdraw (2.390251,-0.354282)
+ --(2.431918,-0.354282)\dpicstop
+\dpicdraw (2.411084,-0.4)
+ --(2.75,-0.4)\dpicstop
+\draw (2.777674,-0.4) node[right=-2bp]{{\tt diode(,CR)}};
+\dpicdraw (2,-0.6)
+ --(2.338916,-0.6)\dpicstop
+\dpicdraw (2.338916,-0.6)
+ --(2.338916,-0.558333)
+ --(2.40555,-0.6)
+ --(2.338916,-0.641667)
+ --(2.338916,-0.6)\dpicstop
+\dpicdraw (2.338916,-0.6)
+ --(2.411084,-0.6)\dpicstop
+\dpicdraw (2.411084,-0.645718)
+ --(2.411084,-0.554282)\dpicstop
+\dpicdraw (2.411084,-0.6)
+ --(2.75,-0.6)\dpicstop
+\draw (2.777674,-0.6) node[right=-2bp]{{\tt diode(,L)}};
+\dpicdraw (2,-0.8)
+ --(2.338916,-0.8)\dpicstop
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!0!black]
+\dpicdraw (2.338916,-0.8)
+ --(2.338916,-0.758333)
+ --(2.40555,-0.8)
+ --(2.338916,-0.8)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\dpicdraw (2.338916,-0.8)
+ --(2.338916,-0.841667)\dpicstop
+\dpicdraw (2.411084,-0.8)
+ --(2.75,-0.8)\dpicstop
+\draw (2.777674,-0.8) node[right=-2bp]{{\tt diode(,F)}};
+\dpicdraw (2,-1)
+ --(2.338916,-1)\dpicstop
+\dpicdraw (2.338916,-1)
+ --(2.338916,-0.958333)
+ --(2.40555,-1)
+ --(2.338916,-1)\dpicstop
+\dpicdraw (2.338916,-1)
+ --(2.338916,-1.041667)\dpicstop
+\dpicdraw (2.411084,-1.045718)
+ --(2.411084,-0.954282)\dpicstop
+\dpicdraw (2.411084,-1)
+ --(2.75,-1)\dpicstop
+\draw (2.777674,-1) node[right=-2bp]{{\tt diode(,Sh)}};
+\dpicdraw (2,-1.2)
+ --(2.338916,-1.2)\dpicstop
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!0!black]
+\dpicdraw (2.338916,-1.158333)
+ --(2.338916,-1.116667)
+ --(2.40555,-1.158333)
+ --(2.338916,-1.2)
+ --(2.338916,-1.158333)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\dpicdraw (2.411084,-1.287385)
+ --(2.411084,-1.112615)\dpicstop
+\dpicdraw (2.338916,-1.287385)
+ --(2.338916,-1.112615)\dpicstop
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!0!black]
+\dpicdraw (2.411084,-1.241667)
+ --(2.411084,-1.2)
+ --(2.34445,-1.241667)
+ --(2.411084,-1.283333)
+ --(2.411084,-1.241667)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\dpicdraw (2.411084,-1.2)
+ --(2.75,-1.2)\dpicstop
+\draw (2.777674,-1.2) node[right=-2bp]{{\tt diode(,D)}};
+\dpicdraw (4.75,0)
+ --(4.411084,0)\dpicstop
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!0!black]
+\dpicdraw (4.411084,0)
+ --(4.411084,-0.041667)
+ --(4.34445,0)
+ --(4.411084,0.041667)
+ --(4.411084,0)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\dpicdraw (4.359749,0.045718)
+ --(4.338916,0.045718)
+ --(4.338916,-0.045718)
+ --(4.318082,-0.045718)\dpicstop
+\dpicdraw (4.338916,0)
+ --(4,0)\dpicstop
+\dpicdraw (4.375,0) circle (0.068898in)\dpicstop
+\draw (4.777674,0) node[right=-2bp]{{\tt diode(,Z,RE)}};
+\dpicdraw (4,-0.25)
+ --(4.338916,-0.25)\dpicstop
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!0!black]
+\dpicdraw (4.338916,-0.25)
+ --(4.338916,-0.208333)
+ --(4.40555,-0.25)
+ --(4.338916,-0.291667)
+ --(4.338916,-0.25)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\dpicdraw (4.390251,-0.295718)
+ --(4.411084,-0.295718)
+ --(4.411084,-0.204282)
+ --(4.390251,-0.204282)\dpicstop
+\dpicdraw (4.411084,-0.25)
+ --(4.75,-0.25)\dpicstop
+\draw (4.777674,-0.25) node[right=-2bp]{{\tt diode(,T)}};
+\dpicdraw (4,-0.55)
+ --(4.338916,-0.55)\dpicstop
+\filldraw[line width=0bp](4.269213,-0.43037)
+ --(4.339362,-0.461236)
+ --(4.308496,-0.391087) --cycle\dpicstop
+\dpicdraw (4.176728,-0.298602)
+ --(4.328524,-0.450398)\dpicstop
+\filldraw[line width=0bp](4.225018,-0.474565)
+ --(4.295168,-0.50543)
+ --(4.264302,-0.435281) --cycle\dpicstop
+\dpicdraw (4.132533,-0.342796)
+ --(4.284329,-0.494592)\dpicstop
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!0!black]
+\dpicdraw (4.338916,-0.55)
+ --(4.338916,-0.508333)
+ --(4.40555,-0.55)
+ --(4.338916,-0.591667)
+ --(4.338916,-0.55)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\dpicdraw (4.411084,-0.595718)
+ --(4.411084,-0.504282)\dpicstop
+\dpicdraw (4.411084,-0.55)
+ --(4.75,-0.55)\dpicstop
+\draw (4.777674,-0.55) node[right=-2bp]{{\tt diode(,P)}};
+\dpicdraw (4,-0.85)
+ --(4.338916,-0.85)\dpicstop
+\filldraw[line width=0bp](4.202683,-0.673662)
+ --(4.132533,-0.642796)
+ --(4.163399,-0.712945) --cycle\dpicstop
+\dpicdraw (4.295168,-0.80543)
+ --(4.143372,-0.653634)\dpicstop
+\filldraw[line width=0bp](4.246877,-0.629467)
+ --(4.176728,-0.598602)
+ --(4.207593,-0.668751) --cycle\dpicstop
+\dpicdraw (4.339362,-0.761236)
+ --(4.187566,-0.60944)\dpicstop
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!0!black]
+\dpicdraw (4.338916,-0.85)
+ --(4.338916,-0.808333)
+ --(4.40555,-0.85)
+ --(4.338916,-0.891667)
+ --(4.338916,-0.85)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\dpicdraw (4.411084,-0.895718)
+ --(4.411084,-0.804282)\dpicstop
+\dpicdraw (4.411084,-0.85)
+ --(4.75,-0.85)\dpicstop
+\draw (4.777674,-0.85) node[right=-2bp]{{\tt diode(,LE)}};
+\dpicdraw (4,-1)
+ --(4.338916,-1)\dpicstop
+\filldraw[line width=0bp](4.207593,-1.181249)
+ --(4.176728,-1.251398)
+ --(4.246877,-1.220533) --cycle\dpicstop
+\dpicdraw (4.339362,-1.088764)
+ --(4.187566,-1.24056)\dpicstop
+\filldraw[line width=0bp](4.163399,-1.137055)
+ --(4.132533,-1.207204)
+ --(4.202683,-1.176338) --cycle\dpicstop
+\dpicdraw (4.295168,-1.04457)
+ --(4.143372,-1.196366)\dpicstop
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!0!black]
+\dpicdraw (4.338916,-1)
+ --(4.338916,-0.958333)
+ --(4.40555,-1)
+ --(4.338916,-1.041667)
+ --(4.338916,-1)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\dpicdraw (4.411084,-1.045718)
+ --(4.411084,-0.954282)\dpicstop
+\dpicdraw (4.411084,-1)
+ --(4.75,-1)\dpicstop
+\draw (4.777674,-1) node[right=-2bp]{{\tt diode(,LER)}};
+\end{tikzpicture}
+\vspace*{-0.5\baselineskip}
diff --git a/graphics/circuit_macros/doc/Diodes.m4 b/graphics/circuit_macros/doc/DiodesMan.m4
index 360d8e9d9e..360d8e9d9e 100644
--- a/graphics/circuit_macros/doc/Diodes.m4
+++ b/graphics/circuit_macros/doc/DiodesMan.m4
diff --git a/graphics/circuit_macros/doc/Emarrows.tex b/graphics/circuit_macros/doc/Emarrows.tex
new file mode 100644
index 0000000000..f409b62c3e
--- /dev/null
+++ b/graphics/circuit_macros/doc/Emarrows.tex
@@ -0,0 +1,142 @@
+\begin{tikzpicture}[scale=2.54]
+% dpic version 2020.03.01 option -g for TikZ and PGF 1.01
+\ifx\dpiclw\undefined\newdimen\dpiclw\fi
+\global\def\dpicdraw{\draw[line width=\dpiclw]}
+\global\def\dpicstop{;}
+\dpiclw=0.8bp
+\dpiclw=0.8bp
+\filldraw[line width=0bp](0.53583,0.053354)
+ --(0.465681,0.08422)
+ --(0.496546,0.014071) --cycle\dpicstop
+\dpicdraw (0.628315,-0.078414)
+ --(0.476519,0.073382)\dpicstop
+\filldraw[line width=0bp](0.580024,0.097549)
+ --(0.509875,0.128414)
+ --(0.540741,0.058265) --cycle\dpicstop
+\dpicdraw (0.672509,-0.03422)
+ --(0.520713,0.117576)\dpicstop
+\dpicdraw[dotted](0.465681,-0.078414) rectangle (0.672509,0.128414)\dpicstop
+\dpiclw=0.4bp
+\filldraw[line width=0bp](0.421111,0.086317)
+ --(0.487778,0.106317)
+ --(0.421111,0.126317) --cycle\dpicstop
+\dpicdraw (0.468444,0.106317)
+ --(0.337778,0.106317)\dpicstop
+\draw (0.337778,0.106317) node[left=-2bp]{\sl Head};
+\filldraw[line width=0bp](0.670412,-0.122984)
+ --(0.650412,-0.056317)
+ --(0.630412,-0.122984) --cycle\dpicstop
+\dpicdraw (0.650412,-0.075651)
+ --(0.650412,-0.176317)\dpicstop
+\draw (0.650412,-0.176317) node[below=-2bp]{\sl Tail};
+\draw (0.546998,0.002903) node[below left=-2bp]{\sl A1};
+\draw (0.591192,0.047097) node[above right=-2bp]{\sl A2};
+\dpiclw=0.8bp
+\draw (0.569095,-0.278414) node[below=-2bp]{\tt em\_arrows(N)};
+\filldraw[line width=0bp](1.724278,0.078265)
+ --(1.755144,0.148414)
+ --(1.684995,0.117549) --cycle\dpicstop
+\dpicdraw (1.592509,-0.01422)
+ --(1.744305,0.137576)\dpicstop
+\filldraw[line width=0bp](1.768472,0.034071)
+ --(1.799338,0.10422)
+ --(1.729189,0.073354) --cycle\dpicstop
+\dpicdraw (1.636704,-0.058414)
+ --(1.7885,0.093382)\dpicstop
+\dpicdraw[fill=black](1.592509,-0.01422) circle (0.007874in)\dpicstop
+\dpicdraw[fill=black](1.636704,-0.058414) circle (0.007874in)\dpicstop
+\draw (1.685924,-0.078414) node[below=-2bp]{\tt em\_arrows(ND,45)};
+\dpicdraw (2.561973,-0.071092)
+ ..controls (2.55221,-0.080855) and (2.53638,-0.080855)
+ ..(2.526617,-0.071092)
+ ..controls (2.516854,-0.061329) and (2.516854,-0.0455)
+ ..(2.526617,-0.035737)\dpicstop
+\dpicdraw (2.526617,-0.035737)
+ ..controls (2.550188,-0.012166) and (2.514832,0.023189)
+ ..(2.491262,-0.000381)\dpicstop
+\dpicdraw (2.491262,-0.000381)
+ ..controls (2.481499,-0.010144) and (2.46567,-0.010144)
+ ..(2.455907,-0.000381)
+ ..controls (2.446144,0.009382) and (2.446144,0.025211)
+ ..(2.455907,0.034974)\dpicstop
+\filldraw[line width=0bp](2.456861,0.073304)
+ --(2.399338,0.091543)
+ --(2.417577,0.03402) --cycle\dpicstop
+\dpicdraw (2.455907,0.034974)
+ --(2.407872,0.083008)\dpicstop
+\dpicdraw (2.606167,-0.026898)
+ ..controls (2.582597,-0.050468) and (2.547241,-0.015113)
+ ..(2.570812,0.008457)\dpicstop
+\dpicdraw (2.570812,0.008457)
+ ..controls (2.580575,0.018221) and (2.580575,0.03405)
+ ..(2.570812,0.043813)
+ ..controls (2.561048,0.053576) and (2.545219,0.053576)
+ ..(2.535456,0.043813)\dpicstop
+\dpicdraw (2.535456,0.043813)
+ ..controls (2.525693,0.03405) and (2.509864,0.03405)
+ ..(2.500101,0.043813)
+ ..controls (2.490338,0.053576) and (2.490338,0.069405)
+ ..(2.500101,0.079168)\dpicstop
+\filldraw[line width=0bp](2.501055,0.117498)
+ --(2.443532,0.135737)
+ --(2.461771,0.078214) --cycle\dpicstop
+\dpicdraw (2.500101,0.079168)
+ --(2.452066,0.127203)\dpicstop
+\draw (2.502753,-0.078414) node[below=-2bp]{\tt $\ldots$(I)};
+\dpicdraw (3.368801,-0.058414)
+ ..controls (3.359038,-0.068177) and (3.343209,-0.068177)
+ ..(3.333446,-0.058414)
+ ..controls (3.323683,-0.048651) and (3.323683,-0.032822)
+ ..(3.333446,-0.023059)\dpicstop
+\dpicdraw (3.333446,-0.023059)
+ ..controls (3.357016,0.000511) and (3.321661,0.035867)
+ ..(3.298091,0.012296)\dpicstop
+\dpicdraw (3.298091,0.012296)
+ ..controls (3.288328,0.002533) and (3.272499,0.002533)
+ ..(3.262735,0.012296)
+ ..controls (3.252972,0.022059) and (3.252972,0.037889)
+ ..(3.262735,0.047652)\dpicstop
+\filldraw[line width=0bp](3.263689,0.085981)
+ --(3.206167,0.10422)
+ --(3.224406,0.046698) --cycle\dpicstop
+\dpicdraw (3.262735,0.047652)
+ --(3.214701,0.095686)\dpicstop
+\dpicdraw (3.412996,-0.01422)
+ ..controls (3.389425,-0.03779) and (3.35407,-0.002435)
+ ..(3.37764,0.021135)\dpicstop
+\dpicdraw (3.37764,0.021135)
+ ..controls (3.387403,0.030898) and (3.387403,0.046727)
+ ..(3.37764,0.05649)
+ ..controls (3.367877,0.066254) and (3.352048,0.066254)
+ ..(3.342285,0.05649)\dpicstop
+\dpicdraw (3.342285,0.05649)
+ ..controls (3.332522,0.046727) and (3.316693,0.046727)
+ ..(3.30693,0.05649)
+ ..controls (3.297167,0.066254) and (3.297167,0.082083)
+ ..(3.30693,0.091846)\dpicstop
+\filldraw[line width=0bp](3.307884,0.130176)
+ --(3.250361,0.148414)
+ --(3.2686,0.090892) --cycle\dpicstop
+\dpicdraw (3.30693,0.091846)
+ --(3.258895,0.13988)\dpicstop
+\dpicdraw[fill=black](3.368801,-0.058414) circle (0.007874in)\dpicstop
+\dpicdraw[fill=black](3.412996,-0.01422) circle (0.007874in)\dpicstop
+\draw (3.319581,-0.078414) node[below=-2bp]{\tt $\ldots$(ID)};
+\dpicdraw (4.121384,-0.078414)
+ --(4.032996,0.009974)
+ --(4.032996,-0.02931)\dpicstop
+\dpicdraw (4.165578,-0.03422)
+ --(4.07719,0.054168)
+ --(4.07719,0.014884)\dpicstop
+\draw (4.099287,-0.078414) node[below=-2bp]{\tt $\ldots$(E)};
+\dpicdraw (4.853966,-0.058414)
+ --(4.765578,0.029974)
+ --(4.765578,-0.00931)\dpicstop
+\dpicdraw (4.898161,-0.01422)
+ --(4.809772,0.074168)
+ --(4.809772,0.034884)\dpicstop
+\dpicdraw[fill=black](4.853966,-0.058414) circle (0.007874in)\dpicstop
+\dpicdraw[fill=black](4.898161,-0.01422) circle (0.007874in)\dpicstop
+\draw (4.841869,-0.078414) node[below=-2bp]{\tt $\ldots$(ED)};
+\end{tikzpicture}
+\vspace*{-0.5\baselineskip}
diff --git a/graphics/circuit_macros/doc/Emarrows.m4 b/graphics/circuit_macros/doc/EmarrowsMan.m4
index c4b2131902..c4b2131902 100644
--- a/graphics/circuit_macros/doc/Emarrows.m4
+++ b/graphics/circuit_macros/doc/EmarrowsMan.m4
diff --git a/graphics/circuit_macros/doc/Fuses.tex b/graphics/circuit_macros/doc/Fuses.tex
new file mode 100644
index 0000000000..f0ae5f2e95
--- /dev/null
+++ b/graphics/circuit_macros/doc/Fuses.tex
@@ -0,0 +1,174 @@
+\begin{tikzpicture}[scale=2.54]
+% dpic version 2020.03.01 option -g for TikZ and PGF 1.01
+\ifx\dpiclw\undefined\newdimen\dpiclw\fi
+\global\def\dpicdraw{\draw[line width=\dpiclw]}
+\global\def\dpicstop{;}
+\dpiclw=0.8bp
+\dpiclw=0.8bp
+\dpicdraw (0,0)
+ --(0.275,0)\dpicstop
+\dpicdraw (0.275,-0)
+ ..controls (0.275,0.027614) and (0.297386,0.05)
+ ..(0.325,0.05)
+ ..controls (0.352614,0.05) and (0.375,0.027614)
+ ..(0.375,0)\dpicstop
+\dpicdraw (0.375,0)
+ ..controls (0.375,-0.027614) and (0.397386,-0.05)
+ ..(0.425,-0.05)
+ ..controls (0.452614,-0.05) and (0.475,-0.027614)
+ ..(0.475,0)\dpicstop
+\dpicdraw (0.475,0)
+ --(0.75,0)\dpicstop
+\draw (0.375,-0.2) node{{\tt fuse}};
+\dpicdraw (1,0)
+ --(1.275,0)\dpicstop
+\dpicdraw (1.275,-0)
+ ..controls (1.275,0.027614) and (1.297386,0.05)
+ ..(1.325,0.05)
+ ..controls (1.352614,0.05) and (1.375,0.027614)
+ ..(1.375,0)\dpicstop
+\dpicdraw[fill=white](1.275,-0) circle (0.007874in)\dpicstop
+\dpicdraw (1.375,0)
+ ..controls (1.375,-0.027614) and (1.397386,-0.05)
+ ..(1.425,-0.05)
+ ..controls (1.452614,-0.05) and (1.475,-0.027614)
+ ..(1.475,0)\dpicstop
+\dpicdraw (1.475,0)
+ --(1.75,0)\dpicstop
+\dpicdraw[fill=white](1.475,0) circle (0.007874in)\dpicstop
+\draw (1.375,-0.2) node{{\tt fuse(,D)}};
+\dpicdraw (2,0)
+ --(2.275,0)\dpicstop
+\dpicdraw (2.475,0)
+ --(2.475,0.05)
+ --(2.275,0.05)
+ --(2.275,-0.05)
+ --(2.475,-0.05)
+ --(2.475,0)\dpicstop
+\dpicdraw (2.275,0)
+ --(2.75,0)\dpicstop
+\draw (2.375,-0.2) node{{\tt fuse(,B)}};
+\dpicdraw (3,0)
+ --(3.275,0)\dpicstop
+\dpicdraw (3.475,0)
+ --(3.475,0.05)
+ --(3.275,0.05)
+ --(3.275,-0.05)
+ --(3.475,-0.05)
+ --(3.475,0)\dpicstop
+\dpicdraw (3.315,-0.05)
+ --(3.315,0.05)\dpicstop
+\dpicdraw (3.435,-0.05)
+ --(3.435,0.05)\dpicstop
+\dpicdraw (3.475,0)
+ --(3.75,0)\dpicstop
+\draw (3.375,-0.2) node{{\tt fuse(,C)}};
+\dpicdraw (4,0)
+ --(4.275,0)\dpicstop
+\dpicdraw (4.475,0)
+ --(4.475,0.05)
+ --(4.275,0.05)
+ --(4.275,-0.05)
+ --(4.475,-0.05)
+ --(4.475,0)\dpicstop
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!0!black]
+\dpicdraw (4.315,0)
+ --(4.315,0.05)
+ --(4.275,0.05)
+ --(4.275,-0.05)
+ --(4.315,-0.05)
+ --(4.315,0)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\dpicdraw (4.475,0)
+ --(4.75,0)\dpicstop
+\draw (4.375,-0.2) node{{\tt fuse(,S)}};
+\dpicdraw (5,0)
+ --(5.208333,0)\dpicstop
+\dpicdraw (5.508333,0)
+ --(5.508333,0.05)
+ --(5.241667,0.05)
+ --(5.241667,-0.05)
+ --(5.508333,-0.05)
+ --(5.508333,0)\dpicstop
+\dpicdraw (5.541667,0)
+ --(5.541667,0.083333)
+ --(5.208333,0.083333)
+ --(5.208333,-0.083333)
+ --(5.541667,-0.083333)
+ --(5.541667,0)\dpicstop
+\dpicdraw (5.208333,0)
+ --(5.75,0)\dpicstop
+\draw (5.375,-0.2) node{{\tt fuse(,HB)}};
+\dpicdraw (0,-0.5)
+ --(0.125,-0.5)\dpicstop
+\dpicdraw (0.565,-0.5)
+ --(0.565,-0.41)
+ --(0.185,-0.41)
+ --(0.185,-0.59)
+ --(0.565,-0.59)
+ --(0.565,-0.5)\dpicstop
+\dpicdraw (0.261,-0.41)
+ --(0.261,-0.59)\dpicstop
+\dpicdraw (0.489,-0.41)
+ --(0.489,-0.59)\dpicstop
+\dpicdraw (0.625,-0.5)
+ --(0.625,-0.35)
+ --(0.125,-0.35)
+ --(0.125,-0.65)
+ --(0.625,-0.65)
+ --(0.625,-0.5)\dpicstop
+\dpicdraw (0.625,-0.5)
+ --(0.75,-0.5)\dpicstop
+\draw (0.375,-0.75) node{{\tt (,HC,0.5,0.3)}};
+\dpicdraw (1,-0.5)
+ --(1.291667,-0.5)\dpicstop
+\dpicdraw (1.276042,-0.46875)
+ ..controls (1.325521,-0.402778) and (1.424479,-0.402778)
+ ..(1.473958,-0.46875)\dpicstop
+\dpicdraw (1.458333,-0.5)
+ --(1.75,-0.5)\dpicstop
+\draw (1.375,-0.75) node{{\tt cbreaker}};
+\dpicdraw (2,-0.5)
+ --(2.291667,-0.5)\dpicstop
+\dpicdraw (2.276042,-0.53125)
+ ..controls (2.325521,-0.597222) and (2.424479,-0.597222)
+ ..(2.473958,-0.53125)\dpicstop
+\dpicdraw (2.458333,-0.5)
+ --(2.75,-0.5)\dpicstop
+\draw (2.375,-0.75) node{{\tt cbreaker(,R)}};
+\dpicdraw (3,-0.5)
+ --(3.291667,-0.5)\dpicstop
+\dpicdraw (3.276042,-0.46875)
+ ..controls (3.325521,-0.402778) and (3.424479,-0.402778)
+ ..(3.473958,-0.46875)\dpicstop
+\dpicdraw (3.458333,-0.5)
+ --(3.75,-0.5)\dpicstop
+\draw (3.375,-0.75) node{{\tt $\ldots$(,{,}D)}};
+\dpicdraw (4,-0.5)
+ --(4.275,-0.5)\dpicstop
+\dpicdraw[line width=0.4bp](4.275,-0.5) circle (0.00109in)\dpicstop
+\dpicdraw (4.275,-0.5)
+ ..controls (4.275,-0.46151) and (4.316667,-0.437454)
+ ..(4.35,-0.456699)
+ ..controls (4.383333,-0.475944) and (4.383333,-0.524056)
+ ..(4.35,-0.543301)\dpicstop
+\dpicdraw[line width=0.4bp](4.475,-0.5) circle (0.00109in)\dpicstop
+\dpicdraw (4.475,-0.5)
+ ..controls (4.475,-0.53849) and (4.433333,-0.562546)
+ ..(4.4,-0.543301)
+ ..controls (4.366667,-0.524056) and (4.366667,-0.475944)
+ ..(4.4,-0.456699)\dpicstop
+\dpicdraw (4.475,-0.5)
+ --(4.75,-0.5)\dpicstop
+\draw (4.375,-0.75) node{{\tt $\ldots$(,{,}T)}};
+\dpicdraw (5,-0.5)
+ --(5.325,-0.5)
+ --(5.325,-0.45)
+ --(5.425,-0.45)
+ --(5.425,-0.5)
+ --(5.75,-0.5)\dpicstop
+\draw (5.375,-0.75) node{{\tt $\ldots$(,{,}TS)}};
+\end{tikzpicture}
+\vspace*{-0.5\baselineskip}
diff --git a/graphics/circuit_macros/doc/Fuses.m4 b/graphics/circuit_macros/doc/FusesMan.m4
index b308e5aadb..bde24fac3e 100644
--- a/graphics/circuit_macros/doc/Fuses.m4
+++ b/graphics/circuit_macros/doc/FusesMan.m4
@@ -4,7 +4,8 @@ cct_init
movewid = 0.25
- {fuse ; {"`{\tt fuse}'" at last line.c+(0,-0.2)}
+ {
+ fuse ; {"`{\tt fuse}'" at last line.c+(0,-0.2)}
move
fuse(,D) ; {"`{\tt fuse(,D)}'" at last line.c+(0,-0.2)}
move
@@ -14,11 +15,10 @@ movewid = 0.25
move
fuse(,S) ; {"`{\tt fuse(,S)}'" at last line.c+(0,-0.2)}
move
- fuse(,HB) ; {"`{\tt fuse(,HB)}'" at last line.c+(0,-0.2)}
+ fuse(,SB) ; {"`{\tt fuse(,SB)}'" at last line.c+(0,-0.2)}
}
move down; right_
- fuse(,HC,0.5,0.3) ; {"`{\tt (,HC,0.5,0.3)}'" at last line.c+(0,-0.25)}
- move
+ {
cbreaker; {"`{\tt cbreaker}'" at last line.c+(0,-0.25)}
move
cbreaker(,R); {"`{\tt cbreaker(,R)}'" at last line.c+(0,-0.25)}
@@ -27,6 +27,13 @@ movewid = 0.25
move
cbreaker(,{,}T); {"`{\tt $\ldots$(,{,}T)}'" at last line.c+(0,-0.25)}
move
- cbreaker(,{,}TS); {"`{\tt $\ldots$(,{,}TS)}'" at last line.c+(0,-0.25)}
+ cbreaker(,{,}TS); {"`{\tt $\ldots$(,{,}TS)}'" at last line.c+(0,-0.25) }
+ }
+ move down; right_
+ {
+ fuse(,HB) ; {"`{\tt fuse(,HB)}'" at last line.c+(0,-0.2)}
+ move
+ fuse(,HC,0.5,0.3) ; {"`{\tt (,HC,0.5,0.3)}'" at last line.c+(0,-0.25)}
+ }
.PE
diff --git a/graphics/circuit_macros/doc/Grounds.tex b/graphics/circuit_macros/doc/Grounds.tex
new file mode 100644
index 0000000000..97ea3b7d9e
--- /dev/null
+++ b/graphics/circuit_macros/doc/Grounds.tex
@@ -0,0 +1,91 @@
+\begin{tikzpicture}[scale=2.54]
+% dpic version 2020.03.01 option -g for TikZ and PGF 1.01
+\ifx\dpiclw\undefined\newdimen\dpiclw\fi
+\global\def\dpicdraw{\draw[line width=\dpiclw]}
+\global\def\dpicstop{;}
+\dpiclw=0.8bp
+\dpiclw=0.8bp
+\dpicdraw (0,0)
+ --(0,-0.125)\dpicstop
+\dpicdraw (0.083333,-0.125)
+ --(-0.083333,-0.125)\dpicstop
+\dpicdraw (0.055556,-0.15625)
+ --(-0.055556,-0.15625)\dpicstop
+\dpicdraw (0.035714,-0.1875)
+ --(-0.035714,-0.1875)\dpicstop
+\dpicdraw (0.733333,0)
+ --(0.566667,-0)\dpicstop
+\dpicdraw (0.705556,-0.03125)
+ --(0.594444,-0.03125)\dpicstop
+\dpicdraw (0.685714,-0.0625)
+ --(0.614286,-0.0625)\dpicstop
+\dpicdraw (1.3,0)
+ --(1.3,-0.125)\dpicstop
+\dpicdraw (1.341667,-0.1875)
+ --(1.383333,-0.125)
+ --(1.216667,-0.125)
+ --(1.175,-0.1875)\dpicstop
+\dpicdraw (1.3,-0.125)
+ --(1.258333,-0.1875)\dpicstop
+\dpicdraw (1.95,0)
+ --(1.95,-0.125)\dpicstop
+\dpicdraw[line width=1.6bp](2.005556,-0.125)
+ --(1.894444,-0.125)\dpicstop
+\draw (0,-0.5) node{{\tt ground}};
+\draw (0.65,-0.402778) node{{\tt ground(,T)}};
+\draw (1.3,-0.5) node{{\tt (,{,}F)}};
+\draw (1.95,-0.5) node{{\tt (,{,}E)}};
+\dpicdraw (2.6,0)
+ --(2.6,-0.125)\dpicstop
+\dpicdraw (2.6,-0.125)
+ --(2.683333,-0.125)
+ --(2.6,-0.25)
+ --(2.516667,-0.125)
+ --(2.6,-0.125)\dpicstop
+\dpicdraw (3.25,-0.25)
+ --(3.25,-0.125)\dpicstop
+\dpicdraw (3.25,-0.125)
+ --(3.166667,-0.125)
+ --(3.25,0)
+ --(3.333333,-0.125)
+ --(3.25,-0.125)\dpicstop
+\dpicdraw (3.9,0)
+ --(3.9,-0.125)\dpicstop
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!0!black]
+\dpicdraw (3.9,-0.125)
+ --(3.983333,-0.125)
+ --(3.9,-0.25)
+ --(3.816667,-0.125)
+ --(3.9,-0.125)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\dpicdraw (4.55,0)
+ --(4.55,-0.125)\dpicstop
+\dpicdraw (4.441747,-0.21875)
+ ..controls (4.393634,-0.135417) and (4.453775,-0.03125)
+ ..(4.55,-0.03125)
+ ..controls (4.646225,-0.03125) and (4.706366,-0.135417)
+ ..(4.658253,-0.21875)\dpicstop
+\dpicdraw (4.633333,-0.125)
+ --(4.466667,-0.125)\dpicstop
+\dpicdraw (4.605556,-0.15625)
+ --(4.494444,-0.15625)\dpicstop
+\dpicdraw (4.585714,-0.1875)
+ --(4.514286,-0.1875)\dpicstop
+\dpicdraw (5.2,0)
+ --(5.2,-0.125)\dpicstop
+\dpicdraw (5.2,-0.15625) circle (0.049213in)\dpicstop
+\dpicdraw (5.283333,-0.125)
+ --(5.116667,-0.125)\dpicstop
+\dpicdraw (5.255556,-0.15625)
+ --(5.144444,-0.15625)\dpicstop
+\dpicdraw (5.235714,-0.1875)
+ --(5.164286,-0.1875)\dpicstop
+\draw (2.6,-0.5) node{{\tt (,{,}S)}};
+\draw (3.25,-0.5) node{{\tt (,{,}S,90)}};
+\draw (3.9,-0.5) node{{\tt (,{,}Q)}};
+\draw (4.55,-0.5) node{{\tt (,{,}L)}};
+\draw (5.2,-0.5) node{{\tt (,{,}P)}};
+\end{tikzpicture}
+\vspace*{-0.5\baselineskip}
diff --git a/graphics/circuit_macros/doc/Grounds.m4 b/graphics/circuit_macros/doc/GroundsMan.m4
index 13b4730b80..e93fadf33c 100644
--- a/graphics/circuit_macros/doc/Grounds.m4
+++ b/graphics/circuit_macros/doc/GroundsMan.m4
@@ -8,15 +8,18 @@ Ground: ground
GT: ground(,T)
move right sep
GF: ground(,,F)
+sep = 0.55
move right sep
GE: ground(,,E)
move right sep
-B: Here+(0,-0.5) ; {
- "{\tt `ground'}" wid 32bp__ at (Ground,B)
- "{\tt `ground'(,T)}" at (GT,B)+(0,7bp__)
+B: Here+(0,-0.5)
+D: B+(0,11bp__)
+
+ { "{\tt `ground'}" wid 32bp__ at (Ground,B)
+ "{\tt `ground'(,T)}" at (GT,B)+(0,11bp__)
"{\tt (,{,}F)}" at (GF,B)
- "{\tt (,{,}E)}" at (GE,B)}
+ "{\tt (,{,}E)}" at (GE,D)}
GS: ground(,,S)
@@ -28,12 +31,16 @@ GQ: ground(,,Q)
GL: ground(,,L)
move right sep
GP: ground(,,P)
+ move right sep
+GPA: ground(,T,PA)
C: Here+(0,-0.5)
+E: C+(0,11bp__)
"{\tt (,{,}S)}" at (GS,C)
- "{\tt (,{,}S,90)}" at (GS90,C)
+ "{\tt (,{,}S,90)}" at (GS90,E)
"{\tt (,{,}Q)}" at (GQ,C)
- "{\tt (,{,}L)}" at (GL,C)
+ "{\tt (,{,}L)}" at (GL,E)
"{\tt (,{,}P)}" at (GP,C)
+ "{\tt (,T,PA)}" at (GPA,E)
.PE
diff --git a/graphics/circuit_macros/doc/Headers.tex b/graphics/circuit_macros/doc/Headers.tex
new file mode 100644
index 0000000000..c5b11a87ec
--- /dev/null
+++ b/graphics/circuit_macros/doc/Headers.tex
@@ -0,0 +1,214 @@
+\begin{tikzpicture}[scale=2.54]
+% dpic version 2020.03.01 option -g for TikZ and PGF 1.01
+\ifx\dpiclw\undefined\newdimen\dpiclw\fi
+\global\def\dpicdraw{\draw[line width=\dpiclw]}
+\global\def\dpicstop{;}
+\dpiclw=0.8bp
+\dpiclw=0.8bp
+\dpicdraw (0.275,0)
+ --(0.275,0.15)
+ --(0.125,0.15)
+ --(0.125,-0.15)
+ --(0.275,-0.15)
+ --(0.275,0)\dpicstop
+\dpicdraw (0.2,0.075)
+ --(0,0.075)\dpicstop
+\fill[fill=white,line width=0bp](0.225,0.075)
+ --(0.225,0.1)
+ --(0.175,0.1)
+ --(0.175,0.05)
+ --(0.225,0.05)
+ --(0.225,0.075)--cycle
+\dpicstop
+\dpicdraw (0.225,0.075)
+ --(0.225,0.1)
+ --(0.175,0.1)
+ --(0.175,0.05)
+ --(0.225,0.05)
+ --(0.225,0.075)\dpicstop
+\dpicdraw (0.2,-0.075)
+ --(0,-0.075)\dpicstop
+\dpicdraw[fill=white](0.2,-0.075) circle (0.009843in)\dpicstop
+\draw (0,0.075) node[left=-2bp]{\sl P1};
+\draw (0.1375,-0.28837) node{\tt Header};
+\draw (0,-0.075) node[left=-2bp]{\sl P2};
+\dpicdraw (1.464961,-0.09685)
+ --(1.464961,0.1)
+ --(1.15,0.1)
+ --(1.15,-0.293701)
+ --(1.464961,-0.293701)
+ --(1.464961,-0.09685)\dpicstop
+\dpicdraw (1.225,0.034383)
+ --(1.025,0.034383)\dpicstop
+\fill[fill=white,line width=0bp](1.25,0.034383)
+ --(1.25,0.059383)
+ --(1.2,0.059383)
+ --(1.2,0.009383)
+ --(1.25,0.009383)
+ --(1.25,0.034383)--cycle
+\dpicstop
+\dpicdraw (1.25,0.034383)
+ --(1.25,0.059383)
+ --(1.2,0.059383)
+ --(1.2,0.009383)
+ --(1.25,0.009383)
+ --(1.25,0.034383)\dpicstop
+\dpicdraw (1.389961,0.034383)
+ --(1.589961,0.034383)\dpicstop
+\dpicdraw[fill=white](1.389961,0.034383) circle (0.009843in)\dpicstop
+\dpicdraw (1.225,-0.09685)
+ --(1.025,-0.09685)\dpicstop
+\dpicdraw[fill=white](1.225,-0.09685) circle (0.009843in)\dpicstop
+\dpicdraw (1.389961,-0.09685)
+ --(1.589961,-0.09685)\dpicstop
+\dpicdraw[fill=white](1.389961,-0.09685) circle (0.009843in)\dpicstop
+\dpicdraw (1.225,-0.228084)
+ --(1.025,-0.228084)\dpicstop
+\dpicdraw[fill=white](1.225,-0.228084) circle (0.009843in)\dpicstop
+\dpicdraw (1.389961,-0.228084)
+ --(1.589961,-0.228084)\dpicstop
+\dpicdraw[fill=white](1.389961,-0.228084) circle (0.009843in)\dpicstop
+\draw (1.025,0.034383) node[left=-2bp]{\sl P1};
+\draw (1.30748,-0.432071) node{\tt Header(2,3,8mm\_\_,10mm\_\_)};
+\draw (1.589961,0.034383) node[right=-2bp]{\sl P2};
+\draw (1.025,-0.228084) node[left=-2bp]{\sl P5};
+\draw (1.589961,-0.228084) node[right=-2bp]{\sl P6};
+\fill[fill=white!90!black,line width=0bp](2.464961,0.006299)
+ --(2.464961,-0.293701)
+ --(2.764961,-0.293701)
+ --(2.764961,0.306299)
+ --(2.464961,0.306299)
+ --(2.464961,0.006299)--cycle
+\dpicstop
+\dpicdraw (2.464961,0.006299)
+ --(2.464961,-0.293701)
+ --(2.764961,-0.293701)
+ --(2.764961,0.306299)
+ --(2.464961,0.306299)
+ --(2.464961,0.006299)\dpicstop
+\dpicdraw (2.689961,-0.218701)
+ --(2.889961,-0.218701)\dpicstop
+\fill[fill=white,line width=0bp](2.664961,-0.218701)
+ --(2.664961,-0.243701)
+ --(2.714961,-0.243701)
+ --(2.714961,-0.193701)
+ --(2.664961,-0.193701)
+ --(2.664961,-0.218701)--cycle
+\dpicstop
+\dpicdraw (2.664961,-0.218701)
+ --(2.664961,-0.243701)
+ --(2.714961,-0.243701)
+ --(2.714961,-0.193701)
+ --(2.664961,-0.193701)
+ --(2.664961,-0.218701)\dpicstop
+\dpicdraw (2.539961,-0.218701)
+ --(2.339961,-0.218701)\dpicstop
+\dpicdraw[fill=white](2.539961,-0.218701) circle (0.009843in)\dpicstop
+\dpicdraw (2.689961,-0.068701)
+ --(2.889961,-0.068701)\dpicstop
+\dpicdraw[fill=white](2.689961,-0.068701) circle (0.009843in)\dpicstop
+\dpicdraw (2.539961,-0.068701)
+ --(2.339961,-0.068701)\dpicstop
+\dpicdraw[fill=white](2.539961,-0.068701) circle (0.009843in)\dpicstop
+\dpicdraw (2.689961,0.081299)
+ --(2.889961,0.081299)\dpicstop
+\dpicdraw[fill=white](2.689961,0.081299) circle (0.009843in)\dpicstop
+\dpicdraw (2.539961,0.081299)
+ --(2.339961,0.081299)\dpicstop
+\dpicdraw[fill=white](2.539961,0.081299) circle (0.009843in)\dpicstop
+\dpicdraw (2.689961,0.231299)
+ --(2.889961,0.231299)\dpicstop
+\dpicdraw[fill=white](2.689961,0.231299) circle (0.009843in)\dpicstop
+\dpicdraw (2.539961,0.231299)
+ --(2.339961,0.231299)\dpicstop
+\dpicdraw[fill=white](2.539961,0.231299) circle (0.009843in)\dpicstop
+\draw (2.889961,-0.218701) node[right=-2bp]{\sl P1};
+\draw (2.614961,-0.570441) node{\tt left\_; Header(2,4,{,},fill\_(0.9))};
+\draw (2.339961,0.231299) node[left=-2bp]{\sl P8};
+\dpicdraw (4.239961,-0.118701)
+ --(4.839961,-0.118701)
+ --(4.839961,0.181299)
+ --(3.639961,0.181299)
+ --(3.639961,-0.118701)
+ --(4.239961,-0.118701)\dpicstop
+\dpicdraw (4.764961,0.106299)
+ --(4.764961,0.306299)\dpicstop
+\fill[fill=white,line width=0bp](4.764961,0.081299)
+ --(4.789961,0.081299)
+ --(4.789961,0.131299)
+ --(4.739961,0.131299)
+ --(4.739961,0.081299)
+ --(4.764961,0.081299)--cycle
+\dpicstop
+\dpicdraw (4.764961,0.081299)
+ --(4.789961,0.081299)
+ --(4.789961,0.131299)
+ --(4.739961,0.131299)
+ --(4.739961,0.081299)
+ --(4.764961,0.081299)\dpicstop
+\dpicdraw (4.764961,-0.043701)
+ --(4.764961,-0.243701)\dpicstop
+\dpicdraw[fill=white](4.764961,-0.043701) circle (0.009843in)\dpicstop
+\dpicdraw (4.614961,0.106299)
+ --(4.614961,0.306299)\dpicstop
+\dpicdraw[fill=white](4.614961,0.106299) circle (0.009843in)\dpicstop
+\dpicdraw (4.614961,-0.043701)
+ --(4.614961,-0.243701)\dpicstop
+\dpicdraw[fill=white](4.614961,-0.043701) circle (0.009843in)\dpicstop
+\dpicdraw (4.464961,0.106299)
+ --(4.464961,0.306299)\dpicstop
+\dpicdraw[fill=white](4.464961,0.106299) circle (0.009843in)\dpicstop
+\dpicdraw (4.464961,-0.043701)
+ --(4.464961,-0.243701)\dpicstop
+\dpicdraw[fill=white](4.464961,-0.043701) circle (0.009843in)\dpicstop
+\dpicdraw (4.314961,0.106299)
+ --(4.314961,0.306299)\dpicstop
+\dpicdraw[fill=white](4.314961,0.106299) circle (0.009843in)\dpicstop
+\dpicdraw (4.314961,-0.043701)
+ --(4.314961,-0.243701)\dpicstop
+\dpicdraw[fill=white](4.314961,-0.043701) circle (0.009843in)\dpicstop
+\dpicdraw (4.164961,0.106299)
+ --(4.164961,0.306299)\dpicstop
+\dpicdraw[fill=white](4.164961,0.106299) circle (0.009843in)\dpicstop
+\dpicdraw (4.164961,-0.043701)
+ --(4.164961,-0.243701)\dpicstop
+\dpicdraw[fill=white](4.164961,-0.043701) circle (0.009843in)\dpicstop
+\dpicdraw (4.014961,0.106299)
+ --(4.014961,0.306299)\dpicstop
+\dpicdraw[fill=white](4.014961,0.106299) circle (0.009843in)\dpicstop
+\dpicdraw (4.014961,-0.043701)
+ --(4.014961,-0.243701)\dpicstop
+\dpicdraw[fill=white](4.014961,-0.043701) circle (0.009843in)\dpicstop
+\dpicdraw (3.864961,0.106299)
+ --(3.864961,0.306299)\dpicstop
+\dpicdraw[fill=white](3.864961,0.106299) circle (0.009843in)\dpicstop
+\dpicdraw (3.864961,-0.043701)
+ --(3.864961,-0.243701)\dpicstop
+\dpicdraw[fill=white](3.864961,-0.043701) circle (0.009843in)\dpicstop
+\dpicdraw (3.714961,0.106299)
+ --(3.714961,0.306299)\dpicstop
+\dpicdraw[fill=white](3.714961,0.106299) circle (0.009843in)\dpicstop
+\dpicdraw (3.714961,-0.043701)
+ --(3.714961,-0.243701)\dpicstop
+\dpicdraw[fill=white](3.714961,-0.043701) circle (0.009843in)\dpicstop
+\draw (4.764961,0.306299) node[right=-2bp]{\sl P1};
+\draw (4.764961,-0.243701) node[right=-2bp]{\sl P2};
+\draw (4.239961,-0.382071) node{\tt down\_; Header(2,8)};
+\draw (3.714961,0.306299) node[left=-2bp]{\sl P15};
+\draw (3.714961,-0.243701) node[left=-2bp]{\sl P16};
+\dpiclw=0.4bp
+\filldraw[line width=0bp](4.856627,0.126299)
+ --(4.789961,0.106299)
+ --(4.856627,0.086299) --cycle\dpicstop
+\dpicdraw (4.809295,0.106299)
+ --(4.939961,0.106299)\dpicstop
+\draw (4.939961,0.106299) node[right=-2bp]{\sl PinP1};
+\filldraw[line width=0bp](4.856627,-0.023701)
+ --(4.789961,-0.043701)
+ --(4.856627,-0.063701) --cycle\dpicstop
+\dpicdraw (4.809295,-0.043701)
+ --(4.939961,-0.043701)\dpicstop
+\draw (4.939961,-0.043701) node[right=-2bp]{\sl PinP2};
+\dpiclw=0.8bp
+\end{tikzpicture}
+\vspace*{-0.5\baselineskip}
diff --git a/graphics/circuit_macros/doc/Headers.m4 b/graphics/circuit_macros/doc/HeadersMan.m4
index a4e1abce3b..1c040227e3 100644
--- a/graphics/circuit_macros/doc/Headers.m4
+++ b/graphics/circuit_macros/doc/HeadersMan.m4
@@ -5,7 +5,11 @@ log_init
Header
{"\sl P1" at last [].P1 rjust
`"\tt Header"' at last [].s+(0,-10pt__)
- "\sl P2" at last [].P2 rjust}
+ "\sl P2" at last [].P2 rjust
+ thinlines_
+ arrow <- from last [].Block.ne-(0,0.1) up 0.15 right 0.15
+ "\sl Block" ljust
+ thicklines_ }
Header(2,3,8mm__,10mm__) with .nw at last [].ne+(0.75,-0.05)
{"\sl P1" at last [].P1 rjust
diff --git a/graphics/circuit_macros/doc/Jack.tex b/graphics/circuit_macros/doc/Jack.tex
new file mode 100644
index 0000000000..2a9610f47a
--- /dev/null
+++ b/graphics/circuit_macros/doc/Jack.tex
@@ -0,0 +1,327 @@
+\begin{tikzpicture}[scale=2.54]
+% dpic version 2020.03.01 option -g for TikZ and PGF 1.01
+\ifx\dpiclw\undefined\newdimen\dpiclw\fi
+\global\def\dpicdraw{\draw[line width=\dpiclw]}
+\global\def\dpicstop{;}
+\dpiclw=0.8bp
+\dpiclw=0.8bp
+\dpicdraw (0.127778,-0.061111)
+ --(0.277778,-0.061111)
+ --(0.277778,0.005556)
+ --(0.477778,0.005556)\dpicstop
+\dpicdraw[fill=white](0.477778,0.005556) circle (0.007874in)\dpicstop
+\dpicdraw (0.127778,0.138889)
+ --(0.277778,0.138889)
+ --(0.277778,0.072222)
+ --(0.427778,0.072222)\dpicstop
+\draw (0.127778,-0.061111) node[left=-2bp]{\sl A};
+\draw (0.127778,0.138889) node[left=-2bp]{\sl B};
+\draw (0.427778,0.072222) node[above right=-2bp]{\sl TB};
+\draw (0.477778,0.005556) node[below right=-2bp]{\sl TA};
+\dpicdraw (0.977778,0.138889)
+ --(1.127778,0.138889)
+ --(1.127778,0.072222)
+ --(1.327778,0.072222)\dpicstop
+\dpicdraw[fill=white](1.327778,0.072222) circle (0.007874in)\dpicstop
+\dpicdraw (0.977778,-0.061111)
+ --(1.127778,-0.061111)
+ --(1.127778,0.005556)
+ --(1.277778,0.005556)\dpicstop
+\draw (0.977778,0.138889) node[left=-2bp]{\sl A};
+\draw (0.977778,-0.061111) node[left=-2bp]{\sl B};
+\dpicdraw (1.827778,-0.061111)
+ --(1.977778,-0.061111)
+ --(1.977778,0.022222)
+ --(2.177778,0.022222)\dpicstop
+\dpicdraw[fill=white](2.177778,0.022222) circle (0.007874in)\dpicstop
+\dpicdraw (1.827778,0.063889)
+ --(2.127778,0.063889)\dpicstop
+\dpicdraw (1.827778,0.188889)
+ --(1.977778,0.188889)
+ --(1.977778,0.105556)
+ --(2.127778,0.105556)\dpicstop
+\draw (1.827778,-0.061111) node[left=-2bp]{\sl A};
+\draw (1.827778,0.188889) node[left=-2bp]{\sl B};
+\draw (1.827778,0.063889) node[left=-2bp]{\sl C};
+\dpicdraw (2.827778,-0.061111)
+ --(2.677778,-0.061111)
+ --(2.677778,0.022222)
+ --(2.477778,0.022222)\dpicstop
+\dpicdraw[fill=white](2.477778,0.022222) circle (0.007874in)\dpicstop
+\dpicdraw (2.827778,0.063889)
+ --(2.527778,0.063889)\dpicstop
+\dpicdraw (2.827778,0.188889)
+ --(2.677778,0.188889)
+ --(2.677778,0.105556)
+ --(2.527778,0.105556)\dpicstop
+\draw (2.827778,-0.061111) node[right=-2bp]{\sl A};
+\draw (2.827778,0.188889) node[right=-2bp]{\sl B};
+\draw (2.827778,0.063889) node[right=-2bp]{\sl C};
+\draw (0.312778,-0.161111) node[below=-2bp]{\tt plug};
+\draw (1.162778,-0.161111) node[below=-2bp]{\tt plug(,R)};
+\draw (1.912778,-0.161111) node[below=-2bp]{\tt plug(,3)};
+\draw (2.742778,-0.161111) node[below=-2bp]{\tt plug(L,3R)};
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!100!black]
+\dpicdraw (0.498611,-0.871242)
+ --(0.498611,-0.746242)
+ --(0.456944,-0.746242)
+ --(0.456944,-0.996242)
+ --(0.498611,-0.996242)
+ --(0.498611,-0.871242)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\dpicdraw (0.427778,-0.758742)
+ --(0.396528,-0.789992)
+ --(0.365278,-0.758742)
+ --(0.127778,-0.758742)\dpicstop
+\dpicdraw[fill=white](0.127778,-0.758742) circle (0.007874in)\dpicstop
+\dpiclw=0.4bp
+\draw (0.127778,-0.758742) node[left=-2bp]{\sl L};
+\filldraw[line width=0bp](0.565278,-0.851242)
+ --(0.498611,-0.871242)
+ --(0.565278,-0.891242) --cycle\dpicstop
+\dpicdraw (0.517945,-0.871242)
+ --(0.598611,-0.871242)\dpicstop
+\draw (0.598611,-0.871242) node[right=-2bp]{\sl F};
+\filldraw[line width=0bp](0.497778,-1.062909)
+ --(0.477778,-0.996242)
+ --(0.457778,-1.062909) --cycle\dpicstop
+\dpicdraw (0.477778,-1.015576)
+ --(0.477778,-1.096242)
+ --(0.377778,-1.096242)\dpicstop
+\draw (0.377778,-1.096242) node[left=-2bp]{\sl G};
+\dpiclw=0.8bp
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!100!black]
+\dpicdraw (1.698611,-0.871242)
+ --(1.698611,-0.746242)
+ --(1.656944,-0.746242)
+ --(1.656944,-0.996242)
+ --(1.698611,-0.996242)
+ --(1.698611,-0.871242)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\dpicdraw (1.627778,-0.758742)
+ --(1.596528,-0.789992)
+ --(1.565278,-0.758742)
+ --(1.327778,-0.758742)\dpicstop
+\dpicdraw[fill=white](1.327778,-0.758742) circle (0.007874in)\dpicstop
+\filldraw[line width=0bp](1.396528,-0.671242)
+ --(1.427778,-0.733742)
+ --(1.459028,-0.671242) --cycle\dpicstop
+\dpicdraw (1.427778,-0.72132)
+ --(1.427778,-0.639992)\dpicstop
+\filldraw[line width=0bp](1.459028,-0.821242)
+ --(1.427778,-0.758742)
+ --(1.396528,-0.821242) --cycle\dpicstop
+\dpicdraw (1.427778,-0.771165)
+ --(1.427778,-0.852492)\dpicstop
+\dpicdraw (1.577778,-0.983742)
+ --(1.546528,-0.952492)
+ --(1.515278,-0.983742)
+ --(1.327778,-0.983742)\dpicstop
+\dpicdraw[fill=white](1.327778,-0.983742) circle (0.007874in)\dpicstop
+\dpiclw=0.4bp
+\draw (1.327778,-0.758742) node[left=-2bp]{\sl L};
+\filldraw[line width=0bp](1.361111,-0.659992)
+ --(1.427778,-0.639992)
+ --(1.361111,-0.619992) --cycle\dpicstop
+\dpicdraw (1.408444,-0.639992)
+ --(1.177778,-0.639992)\dpicstop
+\draw (1.177778,-0.639992) node[left=-2bp]{\sl LM};
+\filldraw[line width=0bp](1.361111,-0.872492)
+ --(1.427778,-0.852492)
+ --(1.361111,-0.832492) --cycle\dpicstop
+\dpicdraw (1.408444,-0.852492)
+ --(1.177778,-0.852492)\dpicstop
+\draw (1.177778,-0.852492) node[left=-2bp]{\sl LB};
+\draw (1.327778,-0.983742) node[left=-2bp]{\sl S};
+\dpiclw=0.8bp
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!100!black]
+\dpicdraw (2.098611,-0.871242)
+ --(2.098611,-0.996242)
+ --(2.140278,-0.996242)
+ --(2.140278,-0.746242)
+ --(2.098611,-0.746242)
+ --(2.098611,-0.871242)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\dpicdraw (2.169444,-0.758742)
+ --(2.200694,-0.789992)
+ --(2.231944,-0.758742)
+ --(2.469444,-0.758742)\dpicstop
+\dpicdraw[fill=white](2.469444,-0.758742) circle (0.007874in)\dpicstop
+\dpicdraw (2.219444,-0.983742)
+ --(2.250694,-0.952492)
+ --(2.281944,-0.983742)
+ --(2.469444,-0.983742)\dpicstop
+\dpicdraw[fill=white](2.469444,-0.983742) circle (0.007874in)\dpicstop
+\dpiclw=0.4bp
+\draw (2.469444,-0.758742) node[right=-2bp]{\sl L};
+\draw (2.469444,-0.983742) node[right=-2bp]{\sl S};
+\dpiclw=0.8bp
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!100!black]
+\dpicdraw (3.198611,-0.871242)
+ --(3.198611,-0.996242)
+ --(3.240278,-0.996242)
+ --(3.240278,-0.746242)
+ --(3.198611,-0.746242)
+ --(3.198611,-0.871242)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\dpicdraw (3.269444,-0.758742)
+ --(3.300694,-0.789992)
+ --(3.331944,-0.758742)
+ --(3.569444,-0.758742)\dpicstop
+\dpicdraw[fill=white](3.569444,-0.758742) circle (0.007874in)\dpicstop
+\filldraw[line width=0bp](3.500694,-0.821242)
+ --(3.469444,-0.758742)
+ --(3.438194,-0.821242) --cycle\dpicstop
+\dpicdraw (3.469444,-0.771165)
+ --(3.469444,-0.852492)\dpicstop
+\dpicdraw (3.319444,-0.571242)
+ --(3.569444,-0.571242)\dpicstop
+\dpicdraw[fill=white](3.569444,-0.571242) circle (0.007874in)\dpicstop
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!100!black]
+\dpicdraw (3.339028,-0.664992)
+ --(3.339028,-0.758742)
+ --(3.359861,-0.758742)
+ --(3.359861,-0.571242)
+ --(3.339028,-0.571242)
+ --(3.339028,-0.664992)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\filldraw[line width=0bp](3.438194,-0.483742)
+ --(3.469444,-0.546242)
+ --(3.500694,-0.483742) --cycle\dpicstop
+\dpicdraw (3.469444,-0.53382)
+ --(3.469444,-0.452492)\dpicstop
+\dpicdraw (3.319444,-0.383742)
+ --(3.569444,-0.383742)\dpicstop
+\dpicdraw[fill=white](3.569444,-0.383742) circle (0.007874in)\dpicstop
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!100!black]
+\dpicdraw (3.339028,-0.477492)
+ --(3.339028,-0.571242)
+ --(3.359861,-0.571242)
+ --(3.359861,-0.383742)
+ --(3.339028,-0.383742)
+ --(3.339028,-0.477492)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\filldraw[line width=0bp](3.438194,-0.296242)
+ --(3.469444,-0.358742)
+ --(3.500694,-0.296242) --cycle\dpicstop
+\dpicdraw (3.469444,-0.34632)
+ --(3.469444,-0.264992)\dpicstop
+\dpicdraw (3.319444,-0.983742)
+ --(3.350694,-0.952492)
+ --(3.381944,-0.983742)
+ --(3.569444,-0.983742)\dpicstop
+\dpicdraw[fill=white](3.569444,-0.983742) circle (0.007874in)\dpicstop
+\dpiclw=0.4bp
+\draw (3.569444,-0.571242) node[right=-2bp]{\sl L1};
+\filldraw[line width=0bp](3.536111,-0.432492)
+ --(3.469444,-0.452492)
+ --(3.536111,-0.472492) --cycle\dpicstop
+\dpicdraw (3.488778,-0.452492)
+ --(3.769444,-0.452492)\dpicstop
+\draw (3.769444,-0.452492) node[right=-2bp]{\sl LM1};
+\draw (3.569444,-0.383742) node[right=-2bp]{\sl L2};
+\filldraw[line width=0bp](3.536111,-0.244992)
+ --(3.469444,-0.264992)
+ --(3.536111,-0.284992) --cycle\dpicstop
+\dpicdraw (3.488778,-0.264992)
+ --(3.769444,-0.264992)\dpicstop
+\draw (3.769444,-0.264992) node[right=-2bp]{\sl LM2};
+\draw (3.569444,-0.983742) node[right=-2bp]{\sl S};
+\draw (3.569444,-0.758742) node[right=-2bp]{\sl L};
+\filldraw[line width=0bp](3.536111,-0.832492)
+ --(3.469444,-0.852492)
+ --(3.536111,-0.872492) --cycle\dpicstop
+\dpicdraw (3.488778,-0.852492)
+ --(3.669444,-0.852492)\dpicstop
+\draw (3.669444,-0.852492) node[right=-2bp]{\sl LB};
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!100!black]
+\dpicdraw (5.148611,-0.871242)
+ --(5.148611,-0.746242)
+ --(5.106944,-0.746242)
+ --(5.106944,-0.996242)
+ --(5.148611,-0.996242)
+ --(5.148611,-0.871242)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\dpicdraw (5.077778,-0.983742)
+ --(5.046528,-0.952492)
+ --(5.015278,-0.983742)
+ --(4.777778,-0.983742)\dpicstop
+\dpicdraw[fill=white](4.777778,-0.983742) circle (0.007874in)\dpicstop
+\filldraw[line width=0bp](4.846528,-0.921242)
+ --(4.877778,-0.983742)
+ --(4.909028,-0.921242) --cycle\dpicstop
+\dpicdraw (4.877778,-0.97132)
+ --(4.877778,-0.889992)\dpicstop
+\dpicdraw (5.027778,-0.758742)
+ --(4.996528,-0.789992)
+ --(4.965278,-0.758742)
+ --(4.777778,-0.758742)\dpicstop
+\dpicdraw[fill=white](4.777778,-0.758742) circle (0.007874in)\dpicstop
+\filldraw[line width=0bp](4.909028,-0.821242)
+ --(4.877778,-0.758742)
+ --(4.846528,-0.821242) --cycle\dpicstop
+\dpicdraw (4.877778,-0.771165)
+ --(4.877778,-0.852492)\dpicstop
+\dpicdraw (4.977778,-0.571242)
+ --(4.777778,-0.571242)\dpicstop
+\dpicdraw[fill=white](4.777778,-0.571242) circle (0.007874in)\dpicstop
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!100!black]
+\dpicdraw (4.958194,-0.664992)
+ --(4.958194,-0.571242)
+ --(4.937361,-0.571242)
+ --(4.937361,-0.758742)
+ --(4.958194,-0.758742)
+ --(4.958194,-0.664992)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\filldraw[line width=0bp](4.846528,-0.483742)
+ --(4.877778,-0.546242)
+ --(4.909028,-0.483742) --cycle\dpicstop
+\dpicdraw (4.877778,-0.53382)
+ --(4.877778,-0.452492)\dpicstop
+\draw (4.777778,-0.983742) node[left=-2bp]{\sl L};
+\draw (4.777778,-0.758742) node[left=-2bp]{\sl S};
+\draw (4.777778,-0.571242) node[left=-2bp]{\sl S1};
+\filldraw[line width=0bp](4.811111,-0.472492)
+ --(4.877778,-0.452492)
+ --(4.811111,-0.432492) --cycle\dpicstop
+\dpicdraw (4.858444,-0.452492)
+ --(4.577778,-0.452492)\dpicstop
+\draw (4.577778,-0.452492) node[left=-2bp]{\sl SM1};
+\filldraw[line width=0bp](4.811111,-0.909992)
+ --(4.877778,-0.889992)
+ --(4.811111,-0.869992) --cycle\dpicstop
+\dpicdraw (4.858444,-0.889992)
+ ..controls (4.743111,-0.889992) and (4.577778,-0.914992)
+ ..(4.527778,-0.939992)\dpicstop
+\draw (4.527778,-0.939992) node[left=-2bp]{\sl LB};
+\filldraw[line width=0bp](4.811111,-0.872492)
+ --(4.877778,-0.852492)
+ --(4.811111,-0.832492) --cycle\dpicstop
+\dpicdraw (4.858444,-0.852492)
+ ..controls (4.743111,-0.852492) and (4.577778,-0.827492)
+ ..(4.527778,-0.802492)\dpicstop
+\draw (4.527778,-0.802492) node[left=-2bp]{\sl SB};
+\dpiclw=0.8bp
+\draw (0.303194,-1.146242) node[below=-2bp]{\tt jack};
+\draw (1.334306,-1.146242) node[below=-2bp]{\tt jack(,LMBS)};
+\draw (2.294028,-1.146242) node[below=-2bp]{\tt ..(L,RLS)};
+\draw (3.394028,-1.146242) node[below=-2bp]{\tt ..(L,RLBLMLMS)};
+\draw (4.953194,-1.146242) node[below=-2bp]{\tt ..(,RSBSMLB)};
+\end{tikzpicture}
+\vspace*{-0.5\baselineskip}
diff --git a/graphics/circuit_macros/doc/Jack.m4 b/graphics/circuit_macros/doc/JackMan.m4
index b9a005d279..b9a005d279 100644
--- a/graphics/circuit_macros/doc/Jack.m4
+++ b/graphics/circuit_macros/doc/JackMan.m4
diff --git a/graphics/circuit_macros/doc/Logic.tex b/graphics/circuit_macros/doc/Logic.tex
new file mode 100644
index 0000000000..fae1a4e3c0
--- /dev/null
+++ b/graphics/circuit_macros/doc/Logic.tex
@@ -0,0 +1,212 @@
+\begin{tikzpicture}[scale=2.54]
+% dpic version 2020.03.01 option -g for TikZ and PGF 1.01
+\ifx\dpiclw\undefined\newdimen\dpiclw\fi
+\global\def\dpicdraw{\draw[line width=\dpiclw]}
+\global\def\dpicstop{;}
+\dpiclw=0.8bp
+\dpiclw=0.8bp
+\dpicdraw (0.2,0.45)
+ --(0,0.45)
+ --(0,0.75)
+ --(0.2,0.75)\dpicstop
+\dpicdraw (0.2,0.75)
+ ..controls (0.4,0.75) and (0.4,0.45)
+ ..(0.2,0.45)\dpicstop
+\draw (0.6,0.6) node[right=-2bp]{{\tt AND\_gate}};
+\dpicdraw (0.122222,0.348911)
+ --(0,0.348911)\dpicstop
+\dpicdraw (0.004513,0.351089)
+ ..controls (0.050565,0.25571) and (0.050948,0.144606)
+ ..(0.005556,0.048911)\dpicstop
+\dpicdraw (0,0.048911)
+ --(0.122222,0.048911)\dpicstop
+\dpicdraw (0.122222,0.348911)
+ ..controls (0.222661,0.348911) and (0.313857,0.290284)
+ ..(0.355556,0.198911)\dpicstop
+\dpicdraw (0.122222,0.048911)
+ ..controls (0.222661,0.048911) and (0.313857,0.107537)
+ ..(0.355556,0.198911)\dpicstop
+\draw (0.6,0.2) node[right=-2bp]{{\tt OR\_gate}};
+\dpicdraw (0.175,-0.2)
+ --(0,-0.3)
+ --(0,-0.1)
+ --(0.175,-0.2)\dpicstop
+\draw (0.6,-0.2) node[right=-2bp]{{\tt BUFFER\_gate}};
+\dpicdraw (-0,-0.451089)
+ ..controls (0.04503,-0.54602) and (0.04503,-0.656159)
+ ..(-0,-0.751089)\dpicstop
+\dpicdraw (0.166667,-0.451089)
+ --(0.044444,-0.451089)\dpicstop
+\dpicdraw (0.048957,-0.448911)
+ ..controls (0.095009,-0.54429) and (0.095392,-0.655394)
+ ..(0.05,-0.751089)\dpicstop
+\dpicdraw (0.044444,-0.751089)
+ --(0.166667,-0.751089)\dpicstop
+\dpicdraw (0.166667,-0.451089)
+ ..controls (0.267105,-0.451089) and (0.358302,-0.509716)
+ ..(0.4,-0.601089)\dpicstop
+\dpicdraw (0.166667,-0.751089)
+ ..controls (0.267105,-0.751089) and (0.358302,-0.692463)
+ ..(0.4,-0.601089)\dpicstop
+\draw (0.6,-0.6) node[right=-2bp]{{\tt XOR\_gate}};
+\dpicdraw (2.13718,0.45)
+ --(1.93718,0.45)
+ --(1.93718,0.75)
+ --(2.13718,0.75)\dpicstop
+\dpicdraw (2.13718,0.75)
+ ..controls (2.33718,0.75) and (2.33718,0.45)
+ ..(2.13718,0.45)\dpicstop
+\dpicdraw (2.32468,0.6) circle (0.014764in)\dpicstop
+\draw (2.53718,0.6) node[right=-2bp]{{\tt NAND\_gate}};
+\dpicdraw (2.059402,0.348911)
+ --(1.93718,0.348911)\dpicstop
+\dpicdraw (1.941693,0.351089)
+ ..controls (1.987745,0.25571) and (1.988128,0.144606)
+ ..(1.942736,0.048911)\dpicstop
+\dpicdraw (1.93718,0.048911)
+ --(2.059402,0.048911)\dpicstop
+\dpicdraw (2.059402,0.348911)
+ ..controls (2.159841,0.348911) and (2.251037,0.290284)
+ ..(2.292736,0.198911)\dpicstop
+\dpicdraw (2.059402,0.048911)
+ ..controls (2.159841,0.048911) and (2.251037,0.107537)
+ ..(2.292736,0.198911)\dpicstop
+\dpicdraw (2.330236,0.198911) circle (0.014764in)\dpicstop
+\draw (2.53718,0.2) node[right=-2bp]{{\tt NOR\_gate(3)}};
+\dpiclw=0.4bp
+\filldraw[line width=0bp](2.434402,0.218911)
+ --(2.367736,0.198911)
+ --(2.434402,0.178911) --cycle\dpicstop
+\dpicdraw (2.387069,0.198911)
+ --(2.444069,0.198911)
+ ..controls (2.482069,0.198911) and (2.501069,0.223911)
+ ..(2.501069,0.273911)
+ ..controls (2.501069,0.323911) and (2.509402,0.348911)
+ ..(2.526069,0.348911)
+ --(2.551069,0.348911)\dpicstop
+\draw (2.551069,0.348911) node[right=-2bp]{{\tt Out}};
+\filldraw[line width=0bp](2.350236,0.132244)
+ --(2.330236,0.198911)
+ --(2.310236,0.132244) --cycle\dpicstop
+\dpicdraw (2.330236,0.179577)
+ --(2.330236,0.122577)
+ ..controls (2.330236,0.084577) and (2.369819,0.062799)
+ ..(2.448986,0.057244)
+ --(2.567736,0.048911)\dpicstop
+\draw (2.567736,0.048911) node[right=-2bp]{{\tt N\_Out}};
+\filldraw[line width=0bp](1.902093,0.263339)
+ --(1.961918,0.298911)
+ --(1.892391,0.302144) --cycle\dpicstop
+\dpicdraw (1.943161,0.294221)
+ --(1.761918,0.248911)\dpicstop
+\draw (1.761918,0.268911) node[left=-2bp]{{\tt In1\/}};
+\filldraw[line width=0bp](1.916682,0.163339)
+ --(1.976508,0.198911)
+ --(1.906981,0.202144) --cycle\dpicstop
+\dpicdraw (1.957751,0.194221)
+ --(1.776508,0.148911)\dpicstop
+\draw (1.776508,0.148911) node[left=-2bp]{{\tt In2\/}};
+\filldraw[line width=0bp](1.902093,0.063339)
+ --(1.961918,0.098911)
+ --(1.892391,0.102144) --cycle\dpicstop
+\dpicdraw (1.943161,0.094221)
+ --(1.761918,0.048911)\dpicstop
+\draw (1.761918,0.028911) node[left=-2bp]{{\tt In3\/}};
+\dpiclw=0.8bp
+\dpicdraw (2.11218,-0.2)
+ --(1.93718,-0.3)
+ --(1.93718,-0.1)
+ --(2.11218,-0.2)\dpicstop
+\dpicdraw (2.14968,-0.2) circle (0.014764in)\dpicstop
+\draw (2.53718,-0.2) node[right=-2bp]{{\tt NOT\_gate}};
+\dpicdraw (1.992998,-0.451089)
+ ..controls (2.038027,-0.54602) and (2.038027,-0.656159)
+ ..(1.992998,-0.751089)\dpicstop
+\dpicdraw (2.159664,-0.451089)
+ --(2.037442,-0.451089)\dpicstop
+\dpicdraw (2.041955,-0.448911)
+ ..controls (2.088007,-0.54429) and (2.08839,-0.655394)
+ ..(2.042998,-0.751089)\dpicstop
+\dpicdraw (2.037442,-0.751089)
+ --(2.159664,-0.751089)\dpicstop
+\dpicdraw (2.159664,-0.451089)
+ ..controls (2.260103,-0.451089) and (2.351299,-0.509716)
+ ..(2.392998,-0.601089)\dpicstop
+\dpicdraw (2.159664,-0.751089)
+ ..controls (2.260103,-0.751089) and (2.351299,-0.692463)
+ ..(2.392998,-0.601089)\dpicstop
+\dpicdraw (2.430498,-0.601089) circle (0.014764in)\dpicstop
+\dpicdraw (1.97468,-0.501089) circle (0.014764in)\dpicstop
+\dpicdraw (1.97468,-0.701089) circle (0.014764in)\dpicstop
+\draw (2.53718,-0.6) node[right=-2bp]{{\tt NXOR\_gate(NPN)}};
+\filldraw[line width=0bp](1.834102,-0.501089)
+ --(1.93718,-0.501089)
+ --(1.846229,-0.452582) --cycle\dpicstop
+\dpicdraw (1.914958,-0.495534)
+ --(1.73718,-0.451089)\dpicstop
+\draw (1.73718,-0.431089) node[left=-2bp]{{\tt In1\/}};
+\filldraw[line width=0bp](1.923692,-0.601089)
+ --(2.02677,-0.601089)
+ --(1.935819,-0.552582) --cycle\dpicstop
+\dpicdraw (2.004548,-0.595534)
+ --(1.82677,-0.551089)\dpicstop
+\draw (1.82677,-0.551089) node[left=-2bp]{{\tt In2\/}};
+\filldraw[line width=0bp](1.834102,-0.701089)
+ --(1.93718,-0.701089)
+ --(1.846229,-0.652582) --cycle\dpicstop
+\dpicdraw (1.914958,-0.695534)
+ --(1.73718,-0.651089)\dpicstop
+\draw (1.73718,-0.671089) node[left=-2bp]{{\tt In3\/}};
+\dpicdraw (3.87436,0.6)
+ --(3.87436,0.775)
+ --(4.22436,0.775)
+ --(4.22436,0.425)
+ --(3.87436,0.425)
+ --(3.87436,0.6)\dpicstop
+\draw (4.04936,0.705815) node{{\scriptsize$ \& $}};
+\draw (4.47436,0.6) node[right=-2bp]{{\tt NAND\_gate(,B)}};
+\dpicdraw (3.87436,0.2)
+ --(3.87436,0.375)
+ --(4.22436,0.375)
+ --(4.22436,0.025)
+ --(3.87436,0.025)
+ --(3.87436,0.2)\dpicstop
+\draw (4.04936,0.305815) node{{\scriptsize$ \geq 1 $}};
+\dpicdraw (3.83686,0.316667) circle (0.014764in)\dpicstop
+\dpicdraw (3.83686,0.2) circle (0.014764in)\dpicstop
+\dpicdraw (3.83686,0.083333) circle (0.014764in)\dpicstop
+\dpicdraw (4.26186,0.2) circle (0.014764in)\dpicstop
+\draw (4.47436,0.2) node[right=-2bp]{{\tt NOR\_gate(3,NB)}};
+\dpicdraw (3.87436,-0.2)
+ --(3.87436,-0.025)
+ --(4.22436,-0.025)
+ --(4.22436,-0.375)
+ --(3.87436,-0.375)
+ --(3.87436,-0.2)\dpicstop
+\draw (4.04936,-0.094185) node{{\scriptsize$ =1 $}};
+\dpicdraw (3.83686,-0.2875) circle (0.014764in)\dpicstop
+\dpicdraw (4.26186,-0.2) circle (0.014764in)\dpicstop
+\draw (4.47436,-0.2) node[right=-2bp]{{\tt BOX\_gate(PN,N,{,},=1)}};
+\dpicdraw (3.87436,-0.1125)
+ --(3.72436,-0.1125)\dpicstop
+\dpicdraw (3.79936,-0.2875)
+ --(3.72436,-0.2875)\dpicstop
+\dpicdraw (4.29936,-0.2)
+ --(4.44936,-0.2)\dpicstop
+\dpicdraw (3.87436,-0.6)
+ --(3.87436,-0.425)
+ --(4.22436,-0.425)
+ --(4.22436,-0.775)
+ --(3.87436,-0.775)
+ --(3.87436,-0.6)\dpicstop
+\draw (4.04936,-0.494185) node{{\scriptsize$ = $}};
+\dpicdraw (4.26186,-0.6) circle (0.014764in)\dpicstop
+\draw (4.47436,-0.6) node[right=-2bp]{{\tt BOX\_gate(PP,N,{,},=)}};
+\dpicdraw (3.87436,-0.5125)
+ --(3.72436,-0.5125)\dpicstop
+\dpicdraw (3.87436,-0.6875)
+ --(3.72436,-0.6875)\dpicstop
+\dpicdraw (4.29936,-0.6)
+ --(4.44936,-0.6)\dpicstop
+\end{tikzpicture}
+\vspace*{-0.5\baselineskip}
diff --git a/graphics/circuit_macros/doc/Logic.m4 b/graphics/circuit_macros/doc/LogicMan.m4
index d42e02768e..d42e02768e 100644
--- a/graphics/circuit_macros/doc/Logic.m4
+++ b/graphics/circuit_macros/doc/LogicMan.m4
diff --git a/graphics/circuit_macros/doc/Makefile b/graphics/circuit_macros/doc/Makefile
index 463f3c0ec1..9e27cc0b27 100644
--- a/graphics/circuit_macros/doc/Makefile
+++ b/graphics/circuit_macros/doc/Makefile
@@ -5,31 +5,30 @@ DOC = Circuit_macros
DOCSRC = Circuit_macros.tex body.tex defines.tex
PICTEX = \
- AmpTable.tex Antennas.tex Audio.tex Axes.tex \
- Buffer.tex BigResistor.tex Bip.tex \
- CctTable.tex Composite.tex ConfigA.tex ConfigB.tex ConfigC.tex Conn.tex \
- Corners.tex Contact.tex Contacts.tex \
- Dac.tex Darlington.tex Demultiplexer.tex Diodes.tex \
- Emarrows.tex FF.tex FlipFlop.tex \
- Flowdiag.tex Fuses.tex Grounds.tex \
- Headers.tex HybridPi.tex Jack.tex \
- Logic.tex Loop.tex Multiplexer.tex NPDT.tex NLG.tex Nport.tex \
- Oblique.tex Opamp.tex Opto.tex \
- ParSeries.tex Pconn.tex Potentiometers.tex Relay.tex relaycoil.tex \
- Series.tex ShiftR.tex Sinus.tex Sources.tex Switches.tex \
- Taps.tex Tgate.tex Thermal.tex Tline.tex Ttree.tex \
- Variable.tex Xform.tex Windings.tex Workflow.tex \
- bitr.tex bi_trans.tex \
- bistable.tex currents.tex eboxdims.tex fbfilter.tex fet.tex \
- lrarrows.tex mplex.tex oax.tex \
- quick.tex stringdims.tex thyristor.tex ujt.tex woodchips.tex
+ AmpTableMan.tex AntennasMan.tex AudioMan.tex Axes.tex \
+ Buffer.tex BigResistor.tex BipMan.tex \
+ CctTableMan.tex Composite.tex ConfigA.tex ConfigB.tex ConfigC.tex \
+ ConnMan.tex Corners.tex ContactMan.tex ContactsMan.tex \
+ Dac.tex Darlington.tex DemultiplexerMan.tex DiodesMan.tex \
+ EmarrowsMan.tex FF.tex FlipFlop.tex Flowdiag.tex FusesMan.tex \
+ GroundsMan.tex HeadersMan.tex HybridPi.tex JackMan.tex LogicMan.tex \
+ Loop.tex MultiplexerMan.tex NPDTMan.tex NLGMan.tex NportMan.tex \
+ Oblique.tex OpampMan.tex Opto.tex ParSeries.tex PconnMan.tex \
+ Potentiometers.tex RelayMan.tex relaycoilMan.tex Series.tex ShiftRMan.tex \
+ Sinus.tex SourcesMan.tex SwitchesMan.tex Taps.tex TgateMan.tex \
+ Thermal.tex Tline.tex VariableMan.tex XformMan.tex \
+ WindingsMan.tex Workflow.tex bitr.tex bi_trans.tex bistableMan.tex \
+ currents.tex eboxdims.tex fbfilter.tex fetMan.tex lrarrows.tex \
+ mplex.tex oax.tex quick.tex \
+ sampleIC.tex stringdims.tex thyristorMan.tex ujtMan.tex \
+ woodchips.tex
VERBATIM = BigResistor2.verb eboxdims.verb
-BOXDIMS = Antennas.tex bi_trans.tex ConfigA.tex ConfigB.tex ConfigC.tex \
+BOXDIMS = AntennasMan.tex bi_trans.tex ConfigA.tex ConfigB.tex ConfigC.tex \
Corners.tex \
Dac.tex eboxdims.tex FlipFlop.tex \
- Opamp.tex ParSeries.tex Sinus.tex stringdims.tex Ttree.tex \
- Windings.tex woodchips.tex
+ OpampMan.tex ParSeries.tex Sinus.tex stringdims.tex \
+ WindingsMan.tex woodchips.tex
# BOXDIMS = $(PICTEX)
LATEX = latex
@@ -59,7 +58,7 @@ SFX = dvi
M4LIBS = $(MODE).m4
.SUFFIXES: .tex .m4
-.m4.tex: $*.m4
+.m4.tex:
touch $(DOC).dim
$(M4) $(M4LIBS) $(DOC).dim $*.m4 > $*.pic
($(PRE) $(PIC) $*.pic $(POST)) > $*.tex
@@ -71,7 +70,8 @@ $(DOC).pdf:
make MODE=pgf PIC="dpic -g" LATEX=pdflatex SFX=pdf \
POST="; printf '\\\\vspace*{-0.5\\\\baselineskip}\\n'" \
$(DOC).pdf
- optpdf $(DOC).pdf
+# This breaks internal links:
+# optpdf $(DOC).pdf
chmod 644 $(DOC).pdf
$(DOC).ps:
diff --git a/graphics/circuit_macros/doc/Multiplexer.tex b/graphics/circuit_macros/doc/Multiplexer.tex
new file mode 100644
index 0000000000..a8a09d6e1c
--- /dev/null
+++ b/graphics/circuit_macros/doc/Multiplexer.tex
@@ -0,0 +1,148 @@
+\begin{tikzpicture}[scale=2.54]
+% dpic version 2020.03.01 option -g for TikZ and PGF 1.01
+\ifx\dpiclw\undefined\newdimen\dpiclw\fi
+\global\def\dpicdraw{\draw[line width=\dpiclw]}
+\global\def\dpicstop{;}
+\dpiclw=0.8bp
+\dpiclw=0.8bp
+{\sf
+\dpicdraw (0.2,0.075)
+ --(0.2,0.525)
+ --(0.6,0.425)
+ --(0.6,-0.275)
+ --(0.2,-0.375)
+ --(0.2,0.075)\dpicstop
+\draw (0.4,0.075) node{\scriptsize M1};
+\dpicdraw (0.6,0.075)
+ --(0.8,0.075)\dpicstop
+\dpicdraw (0.4,-0.325)
+ --(0.4,-0.525)\dpicstop
+\draw (0.2,0.4125) node[right=-2bp]{{\scriptsize 0}};
+\dpicdraw (0.2,0.4125)
+ --(0,0.4125)\dpicstop
+\draw (0.2,0.1875) node[right=-2bp]{{\scriptsize 1}};
+\dpicdraw (0.2,0.1875)
+ --(0,0.1875)\dpicstop
+\draw (0.2,-0.0375) node[right=-2bp]{{\scriptsize 2}};
+\dpicdraw (0.2,-0.0375)
+ --(0,-0.0375)\dpicstop
+\draw (0.2,-0.2625) node[right=-2bp]{{\scriptsize 3}};
+\dpicdraw (0.2,-0.2625)
+ --(0,-0.2625)\dpicstop
+\draw (0.4,-0.525) node[below=-2bp]{\tt Mux(4,M1)};
+\draw (0,0.4125) node[left=-2bp]{\sl In0};
+\draw (0,0.1875) node[left=-2bp]{\sl In1};
+\draw (0,-0.0375) node[left=-2bp]{\sl In2};
+\draw (0,-0.2625) node[left=-2bp]{\sl In3};
+\draw (0.8,0.075) node[above=-2bp]{\sl Out};
+\draw (0.4,-0.525) node[above right=-2bp]{\sl Sel};
+\dpicdraw (1.5,-0.075)
+ --(1.5,-0.525)
+ --(1.1,-0.425)
+ --(1.1,0.275)
+ --(1.5,0.375)
+ --(1.5,-0.075)\dpicstop
+\dpicdraw (1.1,-0.075)
+ --(0.9,-0.075)\dpicstop
+\dpicdraw (1.3,0.325)
+ --(1.3,0.525)\dpicstop
+\draw (1.5,0.285) node[left=-2bp]{{\scriptsize 0}};
+\dpicdraw (1.5,0.285)
+ --(1.7,0.285)\dpicstop
+\draw (1.5,0.105) node[left=-2bp]{{\scriptsize 1}};
+\dpicdraw (1.5,0.105)
+ --(1.7,0.105)\dpicstop
+\draw (1.5,-0.075) node[left=-2bp]{{\scriptsize 2}};
+\dpicdraw (1.5,-0.075)
+ --(1.7,-0.075)\dpicstop
+\draw (1.5,-0.255) node[left=-2bp]{{\scriptsize 3}};
+\dpicdraw (1.5,-0.255)
+ --(1.7,-0.255)\dpicstop
+\draw (1.5,-0.435) node[left=-2bp]{{\scriptsize $\overline{\hbox{OE}}$}};
+\dpicdraw (1.5375,-0.435) circle (0.014764in)\dpicstop
+\dpicdraw (1.575,-0.435)
+ --(1.7,-0.435)\dpicstop
+\draw (1.3,-0.802778) node{\tt left\_; Mux(4,{,}LNOE)};
+\draw (1.7,0.285) node[above=-2bp]{\sl In0};
+\draw (1.755556,-0.435) node[below=-2bp]{\sl NOE};
+\draw (0.9,-0.075) node[below=-2bp]{\sl Out};
+\draw (1.3,0.525) node[below left=-2bp]{\sl Sel};
+\dpicdraw (2.5,-0.0875)
+ --(2.5,0.3625)
+ --(2.9,0.2625)
+ --(2.9,-0.4375)
+ --(2.5,-0.5375)
+ --(2.5,-0.0875)\dpicstop
+\dpicdraw (2.9,-0.0875)
+ --(3.1,-0.0875)\dpicstop
+\dpicdraw (2.6,0.3375)
+ --(2.6,0.5375)\dpicstop
+\dpicdraw (2.8,0.2875)
+ --(2.8,0.4875)\dpicstop
+\draw (2.5,0.2725) node[right=-2bp]{{\scriptsize 00}};
+\dpicdraw (2.5,0.2725)
+ --(2.3,0.2725)\dpicstop
+\draw (2.5,0.0925) node[right=-2bp]{{\scriptsize 01}};
+\dpicdraw (2.5,0.0925)
+ --(2.3,0.0925)\dpicstop
+\draw (2.5,-0.0875) node[right=-2bp]{{\scriptsize 10}};
+\dpicdraw (2.5,-0.0875)
+ --(2.3,-0.0875)\dpicstop
+\draw (2.5,-0.2675) node[right=-2bp]{{\scriptsize 11}};
+\dpicdraw (2.5,-0.2675)
+ --(2.3,-0.2675)\dpicstop
+\draw (2.5,-0.4475) node[right=-2bp]{{\scriptsize OE}};
+\dpicdraw (2.5,-0.4475)
+ --(2.3,-0.4475)\dpicstop
+\draw (2.7,-0.5375) node[below=-2bp]{\tt Mux(4,{,}OEBN2)};
+\draw (2.6,0.5375) node[left=-2bp]{\sl Sel0};
+\draw (2.8,0.4875) node[right=-2bp]{\sl Sel1};
+\draw (2.3,0.2725) node[left=-2bp]{\sl In0};
+\draw (2.3,-0.2675) node[left=-2bp]{\sl In3};
+\draw (2.3,-0.4475) node[left=-2bp]{\sl OE};
+\dpicdraw (4.491667,0.2)
+ --(5.191667,0.2)
+ --(5.091667,-0.2)
+ --(3.891667,-0.2)
+ --(3.791667,0.2)
+ --(4.491667,0.2)\dpicstop
+\dpicdraw (4.491667,-0.2)
+ --(4.491667,-0.4)\dpicstop
+\dpicdraw (3.808333,0.133333)
+ --(3.608333,0.133333)\dpicstop
+\dpicdraw (3.841667,0)
+ --(3.641667,0)\dpicstop
+\dpicdraw (3.875,-0.133333)
+ --(3.675,-0.133333)\dpicstop
+\draw (3.879167,0.2) node[below=-2bp]{{\scriptsize 0}};
+\dpicdraw (3.879167,0.2)
+ --(3.879167,0.4)\dpicstop
+\draw (4.054167,0.2) node[below=-2bp]{{\scriptsize 1}};
+\dpicdraw (4.054167,0.2)
+ --(4.054167,0.4)\dpicstop
+\draw (4.229167,0.2) node[below=-2bp]{{\scriptsize 2}};
+\dpicdraw (4.229167,0.2)
+ --(4.229167,0.4)\dpicstop
+\draw (4.404167,0.2) node[below=-2bp]{{\scriptsize 3}};
+\dpicdraw (4.404167,0.2)
+ --(4.404167,0.4)\dpicstop
+\draw (4.579167,0.2) node[below=-2bp]{{\scriptsize 4}};
+\dpicdraw (4.579167,0.2)
+ --(4.579167,0.4)\dpicstop
+\draw (4.754167,0.2) node[below=-2bp]{{\scriptsize 5}};
+\dpicdraw (4.754167,0.2)
+ --(4.754167,0.4)\dpicstop
+\draw (4.929167,0.2) node[below=-2bp]{{\scriptsize 6}};
+\dpicdraw (4.929167,0.2)
+ --(4.929167,0.4)\dpicstop
+\draw (5.104167,0.2) node[below=-2bp]{{\scriptsize 7}};
+\dpicdraw (5.104167,0.2)
+ --(5.104167,0.4)\dpicstop
+\draw (4.4,-0.4) node[below=-2bp]{\tt down\_; Mux(8,{,}L3,{,}28*L\_unit)};
+\draw (3.608333,0.133333) node[left=-2bp]{\sl Sel0};
+\draw (3.675,-0.133333) node[below left=-2bp]{\sl Sel2};
+\draw (3.879167,0.4) node[left=-2bp]{\sl In0};
+\draw (5.104167,0.4) node[right=-2bp]{\sl In7};
+}
+\end{tikzpicture}
+\vspace*{-0.5\baselineskip}
diff --git a/graphics/circuit_macros/doc/Multiplexer.m4 b/graphics/circuit_macros/doc/MultiplexerMan.m4
index f4b72154a4..f4b72154a4 100644
--- a/graphics/circuit_macros/doc/Multiplexer.m4
+++ b/graphics/circuit_macros/doc/MultiplexerMan.m4
diff --git a/graphics/circuit_macros/doc/NLG.tex b/graphics/circuit_macros/doc/NLG.tex
new file mode 100644
index 0000000000..ba14d3cb04
--- /dev/null
+++ b/graphics/circuit_macros/doc/NLG.tex
@@ -0,0 +1,93 @@
+\begin{tikzpicture}[scale=2.54]
+% dpic version 2020.03.01 option -g for TikZ and PGF 1.01
+\ifx\dpiclw\undefined\newdimen\dpiclw\fi
+\global\def\dpicdraw{\draw[line width=\dpiclw]}
+\global\def\dpicstop{;}
+\dpiclw=0.8bp
+\dpiclw=0.8bp
+\dpicdraw (0.145,-0.25) rectangle (0.895,0.25)\dpicstop
+\draw (0.145,0) node[right=-2bp]{${}0$};
+\draw (0.895,0) node[left=-2bp]{$\infty$};
+\dpicdraw (0.145,0.125)
+ --(0.02,0.125)\dpicstop
+\dpicdraw[fill=black](0.02,0.125) circle (0.007874in)\dpicstop
+\dpicdraw (0.145,-0.125)
+ --(0.02,-0.125)\dpicstop
+\dpicdraw[fill=black](0.02,-0.125) circle (0.007874in)\dpicstop
+\dpicdraw (0.895,0.125)
+ --(1.02,0.125)\dpicstop
+\dpicdraw[fill=black](1.02,0.125) circle (0.007874in)\dpicstop
+\dpicdraw (0.895,-0.125)
+ --(1.02,-0.125)\dpicstop
+\dpicdraw[fill=black](1.02,-0.125) circle (0.007874in)\dpicstop
+\draw (0.52,-0.291511) node[below=-2bp]{\tt nullor};
+\dpicdraw (1.685,-0.25) rectangle (2.185,0.25)\dpicstop
+\dpicdraw (1.685,0.125)
+ --(1.56,0.125)\dpicstop
+\dpicdraw[fill=black](1.56,0.125) circle (0.007874in)\dpicstop
+\dpicdraw (1.685,-0.125)
+ --(1.56,-0.125)\dpicstop
+\dpicdraw[fill=black](1.56,-0.125) circle (0.007874in)\dpicstop
+\dpicdraw (2.185,0.125)
+ --(2.31,0.125)\dpicstop
+\dpicdraw[fill=black](2.31,0.125) circle (0.007874in)\dpicstop
+\dpicdraw (2.185,-0.125)
+ --(2.31,-0.125)\dpicstop
+\dpicdraw[fill=black](2.31,-0.125) circle (0.007874in)\dpicstop
+\dpicdraw (1.685,0.125)
+ --(1.81,0.125)
+ --(1.81,-0.125)
+ --(1.685,-0.125)\dpicstop
+\dpicdraw (1.81,-0.083333)
+ ..controls (1.856024,-0.083333) and (1.893333,-0.046024)
+ ..(1.893333,0)
+ ..controls (1.893333,0.046024) and (1.856024,0.083333)
+ ..(1.81,0.083333)\dpicstop
+\dpicdraw (2.185,0.125)
+ --(2.06,0.125)
+ --(2.06,-0.125)
+ --(2.185,-0.125)\dpicstop
+\dpicdraw (2.06,0.083333)
+ ..controls (2.013976,0.083333) and (1.976667,0.046024)
+ ..(1.976667,0)
+ ..controls (1.976667,-0.046024) and (2.013976,-0.083333)
+ ..(2.06,-0.083333)\dpicstop
+\draw (1.935,-0.291511) node[below=-2bp]{\tt gyrator};
+\dpicdraw (2.83,0.125)
+ --(3.0175,0.125)
+ --(3.0175,-0.125)
+ --(2.83,-0.125)\dpicstop
+\dpicdraw (3.0175,-0.083333)
+ ..controls (3.063524,-0.083333) and (3.100833,-0.046024)
+ ..(3.100833,0)
+ ..controls (3.100833,0.046024) and (3.063524,0.083333)
+ ..(3.0175,0.083333)\dpicstop
+\dpicdraw (3.58,0.125)
+ --(3.3925,0.125)
+ --(3.3925,-0.125)
+ --(3.58,-0.125)\dpicstop
+\dpicdraw (3.3925,0.083333)
+ ..controls (3.346476,0.083333) and (3.309167,0.046024)
+ ..(3.309167,0)
+ ..controls (3.309167,-0.046024) and (3.346476,-0.083333)
+ ..(3.3925,-0.083333)\dpicstop
+\draw (3.205,-0.25) node{\tt gyrator(invis,{,}0,N)};
+\dpicdraw (4.705,-0.25)
+ --(4.705,-0.125)
+ --(4.955,-0.125)
+ --(4.955,-0.25)\dpicstop
+\dpicdraw (4.913333,-0.125)
+ ..controls (4.913333,-0.078976) and (4.876024,-0.041667)
+ ..(4.83,-0.041667)
+ ..controls (4.783976,-0.041667) and (4.746667,-0.078976)
+ ..(4.746667,-0.125)\dpicstop
+\dpicdraw (4.705,0.25)
+ --(4.705,0.125)
+ --(4.955,0.125)
+ --(4.955,0.25)\dpicstop
+\dpicdraw (4.746667,0.125)
+ ..controls (4.746667,0.013889) and (4.913333,0.013889)
+ ..(4.913333,0.125)\dpicstop
+\draw (4.83,-0.291511) node[below=-2bp]{\tt gyrator(invis wid boxht,{,}0,NV)};
+\end{tikzpicture}
+\vspace*{-0.5\baselineskip}
diff --git a/graphics/circuit_macros/doc/NLG.m4 b/graphics/circuit_macros/doc/NLGMan.m4
index 2b9a39f86e..2b9a39f86e 100644
--- a/graphics/circuit_macros/doc/NLG.m4
+++ b/graphics/circuit_macros/doc/NLGMan.m4
diff --git a/graphics/circuit_macros/doc/NPDT.tex b/graphics/circuit_macros/doc/NPDT.tex
new file mode 100644
index 0000000000..3cad25c409
--- /dev/null
+++ b/graphics/circuit_macros/doc/NPDT.tex
@@ -0,0 +1,121 @@
+\begin{tikzpicture}[scale=2.54]
+% dpic version 2020.03.01 option -g for TikZ and PGF 1.01
+\ifx\dpiclw\undefined\newdimen\dpiclw\fi
+\global\def\dpicdraw{\draw[line width=\dpiclw]}
+\global\def\dpicstop{;}
+\dpiclw=0.8bp
+\dpiclw=0.8bp
+\dpicdraw[fill=white](0.024,-0.061976) circle (0.009449in)\dpicstop
+\dpicdraw (0.224,-0.061976)
+ --(0.224,-0.061976)\dpicstop
+\dpicdraw (0.224,-0.061976)
+ --(0.374,0.088024)\dpicstop
+\dpicdraw (0.424,-0.061976)
+ --(0.424,-0.061976)\dpicstop
+\dpicdraw[fill=white](0.224,-0.061976) circle (0.009449in)\dpicstop
+\dpicdraw[fill=white](0.424,-0.061976) circle (0.009449in)\dpicstop
+\draw (0.424,-0.085976) node[below=-2bp]{\sl R};
+\draw (0.224,-0.085976) node[below=-2bp]{\sl T};
+\draw (0.024,-0.085976) node[below=-2bp]{\sl L};
+\draw (0.224,-0.308024) node{\tt NPDT};
+\dpicdraw[fill=white](1.174,-0.061976) circle (0.009449in)\dpicstop
+\dpicdraw (1.174,0.138024)
+ --(1.174,0.138024)\dpicstop
+\dpicdraw (1.174,0.138024)
+ --(1.024,0.288024)\dpicstop
+\dpicdraw (1.174,0.338024)
+ --(1.174,0.338024)\dpicstop
+\dpicdraw[fill=white](1.174,0.138024) circle (0.009449in)\dpicstop
+\dpicdraw[fill=white](1.174,0.338024) circle (0.009449in)\dpicstop
+\draw (1.198,0.338024) node[right=-2bp]{\sl R};
+\draw (1.198,0.138024) node[right=-2bp]{\sl T};
+\draw (1.198,-0.061976) node[right=-2bp]{\sl L};
+\draw (1.212024,-0.235976) node{\tt up\_; NPDT\strut};
+\dpicdraw[fill=white](1.924,-0.061976) circle (0.009449in)\dpicstop
+\dpicdraw (2.124,-0.061976)
+ --(2.124,-0.061976)\dpicstop
+\dpicdraw (2.124,-0.061976)
+ --(2.274,0.088024)\dpicstop
+\dpicdraw (2.324,-0.061976)
+ --(2.324,-0.061976)\dpicstop
+\dpicdraw[fill=white](2.124,-0.061976) circle (0.009449in)\dpicstop
+\dpicdraw[fill=white](2.324,-0.061976) circle (0.009449in)\dpicstop
+\dpicdraw[fill=white](1.924,0.238024) circle (0.009449in)\dpicstop
+\dpicdraw (2.124,0.238024)
+ --(2.124,0.238024)\dpicstop
+\dpicdraw (2.124,0.238024)
+ --(2.274,0.388024)\dpicstop
+\dpicdraw (2.324,0.238024)
+ --(2.324,0.238024)\dpicstop
+\dpicdraw[fill=white](2.124,0.238024) circle (0.009449in)\dpicstop
+\dpicdraw[fill=white](2.324,0.238024) circle (0.009449in)\dpicstop
+\dpicdraw[dash pattern=on 0.05in off 0.05in](2.224,-0.001976)
+ --(2.224,0.373024)\dpicstop
+\draw (2.348,-0.061976) node[right=-2bp]{\sl R1};
+\draw (1.9,-0.061976) node[left=-2bp]{\sl L1};
+\draw (2.348,0.238024) node[right=-2bp]{\sl R2};
+\draw (1.9,0.238024) node[left=-2bp]{\sl L2};
+\draw (2.124,-0.238024) node{\tt NPDT(2)\strut};
+\dpicdraw[fill=white](3.074,0.538024) circle (0.009449in)\dpicstop
+\dpicdraw (3.274,0.538024)
+ --(3.274,0.538024)\dpicstop
+\dpicdraw (3.274,0.538024)
+ --(3.424,0.388024)\dpicstop
+\dpicdraw (3.474,0.538024)
+ --(3.474,0.538024)\dpicstop
+\dpicdraw[fill=white](3.274,0.538024) circle (0.009449in)\dpicstop
+\dpicdraw[fill=white](3.474,0.538024) circle (0.009449in)\dpicstop
+\dpicdraw[fill=white](3.074,0.238024) circle (0.009449in)\dpicstop
+\dpicdraw (3.274,0.238024)
+ --(3.274,0.238024)\dpicstop
+\dpicdraw (3.274,0.238024)
+ --(3.424,0.088024)\dpicstop
+\dpicdraw (3.474,0.238024)
+ --(3.474,0.238024)\dpicstop
+\dpicdraw[fill=white](3.274,0.238024) circle (0.009449in)\dpicstop
+\dpicdraw[fill=white](3.474,0.238024) circle (0.009449in)\dpicstop
+\dpicdraw[fill=white](3.074,-0.061976) circle (0.009449in)\dpicstop
+\dpicdraw (3.274,-0.061976)
+ --(3.274,-0.061976)\dpicstop
+\dpicdraw (3.274,-0.061976)
+ --(3.424,-0.211976)\dpicstop
+\dpicdraw (3.474,-0.061976)
+ --(3.474,-0.061976)\dpicstop
+\dpicdraw[fill=white](3.274,-0.061976) circle (0.009449in)\dpicstop
+\dpicdraw[fill=white](3.474,-0.061976) circle (0.009449in)\dpicstop
+\dpicdraw[dash pattern=on 0.05in off 0.05in](3.374,0.478024)
+ --(3.374,-0.196976)\dpicstop
+\draw (3.498,0.538024) node[right=-2bp]{\sl R1};
+\draw (3.05,0.538024) node[left=-2bp]{\sl L1};
+\draw (3.498,0.238024) node[right=-2bp]{\sl R2};
+\draw (3.05,0.238024) node[left=-2bp]{\sl L2};
+\draw (3.498,-0.061976) node[right=-2bp]{\sl R3};
+\draw (3.05,-0.061976) node[left=-2bp]{\sl L3};
+\draw (3.274,-0.211976) node[below=-2bp]{\tt NPDT(3,R)\strut};
+\dpicdraw[fill=white](4.624,-0.061976) circle (0.009449in)\dpicstop
+\dpicdraw (4.424,-0.061976)
+ --(4.424,-0.061976)\dpicstop
+\dpicdraw (4.424,-0.061976)
+ --(4.274,0.088024)\dpicstop
+\dpicdraw (4.224,-0.061976)
+ --(4.224,-0.061976)\dpicstop
+\dpicdraw[fill=white](4.424,-0.061976) circle (0.009449in)\dpicstop
+\dpicdraw[fill=white](4.224,-0.061976) circle (0.009449in)\dpicstop
+\dpicdraw[fill=white](4.624,0.238024) circle (0.009449in)\dpicstop
+\dpicdraw (4.424,0.238024)
+ --(4.424,0.238024)\dpicstop
+\dpicdraw (4.424,0.238024)
+ --(4.274,0.388024)\dpicstop
+\dpicdraw (4.224,0.238024)
+ --(4.224,0.238024)\dpicstop
+\dpicdraw[fill=white](4.424,0.238024) circle (0.009449in)\dpicstop
+\dpicdraw[fill=white](4.224,0.238024) circle (0.009449in)\dpicstop
+\dpicdraw[dash pattern=on 0.05in off 0.05in](4.324,-0.001976)
+ --(4.324,0.373024)\dpicstop
+\draw (4.2,-0.061976) node[left=-2bp]{\sl R1};
+\draw (4.648,-0.061976) node[right=-2bp]{\sl L1};
+\draw (4.2,0.238024) node[left=-2bp]{\sl R2};
+\draw (4.648,0.238024) node[right=-2bp]{\sl L2};
+\draw (4.424,-0.238024) node{\tt left\_; NPDT(2,R)\strut};
+\end{tikzpicture}
+\vspace*{-0.5\baselineskip}
diff --git a/graphics/circuit_macros/doc/NPDT.m4 b/graphics/circuit_macros/doc/NPDTMan.m4
index 17f4ef26b1..17f4ef26b1 100644
--- a/graphics/circuit_macros/doc/NPDT.m4
+++ b/graphics/circuit_macros/doc/NPDTMan.m4
diff --git a/graphics/circuit_macros/doc/Nport.tex b/graphics/circuit_macros/doc/Nport.tex
new file mode 100644
index 0000000000..e473f19b8d
--- /dev/null
+++ b/graphics/circuit_macros/doc/Nport.tex
@@ -0,0 +1,116 @@
+\begin{tikzpicture}[scale=2.54]
+% dpic version 2020.03.01 option -g for TikZ and PGF 1.01
+\ifx\dpiclw\undefined\newdimen\dpiclw\fi
+\global\def\dpicdraw{\draw[line width=\dpiclw]}
+\global\def\dpicstop{;}
+\dpiclw=0.8bp
+\dpiclw=0.8bp
+\dpicdraw (0.145,-0.25) rectangle (0.895,0.25)\dpicstop
+\dpicdraw (0.145,0.125)
+ --(0.02,0.125)\dpicstop
+\dpicdraw[fill=black](0.02,0.125) circle (0.007874in)\dpicstop
+\dpicdraw (0.145,-0.125)
+ --(0.02,-0.125)\dpicstop
+\dpicdraw[fill=black](0.02,-0.125) circle (0.007874in)\dpicstop
+\dpicdraw (0.895,0.125)
+ --(1.02,0.125)\dpicstop
+\dpicdraw[fill=black](1.02,0.125) circle (0.007874in)\dpicstop
+\dpicdraw (0.895,-0.125)
+ --(1.02,-0.125)\dpicstop
+\dpicdraw[fill=black](1.02,-0.125) circle (0.007874in)\dpicstop
+\draw (0.02,0.125) node[above left=1bp]{\sl W1a};
+\draw (0.02,-0.125) node[below left=1bp]{\sl W1b};
+\draw (1.02,0.125) node[above right=1bp]{\sl E1a};
+\draw (1.02,-0.125) node[below right=1bp]{\sl E1b};
+\dpicdraw[fill=white!90!black](1.895,-0.5) rectangle (3.895,0.5)\dpicstop
+\draw (2.895,0) node{n-port};
+\dpicdraw (1.895,0.25)
+ --(1.77,0.25)\dpicstop
+\dpicdraw[fill=black](1.77,0.25) circle (0.007874in)\dpicstop
+\dpicdraw (1.895,-0.25)
+ --(1.77,-0.25)\dpicstop
+\dpicdraw[fill=black](1.77,-0.25) circle (0.007874in)\dpicstop
+\dpicdraw (2.180714,0.5)
+ --(2.180714,0.625)\dpicstop
+\dpicdraw[fill=black](2.180714,0.625) circle (0.007874in)\dpicstop
+\dpicdraw (2.752143,0.5)
+ --(2.752143,0.625)\dpicstop
+\dpicdraw[fill=black](2.752143,0.625) circle (0.007874in)\dpicstop
+\dpicdraw (3.037857,0.5)
+ --(3.037857,0.625)\dpicstop
+\dpicdraw[fill=black](3.037857,0.625) circle (0.007874in)\dpicstop
+\dpicdraw (3.609286,0.5)
+ --(3.609286,0.625)\dpicstop
+\dpicdraw[fill=black](3.609286,0.625) circle (0.007874in)\dpicstop
+\dpicdraw (3.895,0.4)
+ --(4.02,0.4)\dpicstop
+\dpicdraw[fill=black](4.02,0.4) circle (0.007874in)\dpicstop
+\dpicdraw (3.895,0.2)
+ --(4.02,0.2)\dpicstop
+\dpicdraw[fill=black](4.02,0.2) circle (0.007874in)\dpicstop
+\dpicdraw (3.895,0.1)
+ --(4.02,0.1)\dpicstop
+\dpicdraw[fill=black](4.02,0.1) circle (0.007874in)\dpicstop
+\dpicdraw (3.895,-0.1)
+ --(4.02,-0.1)\dpicstop
+\dpicdraw[fill=black](4.02,-0.1) circle (0.007874in)\dpicstop
+\dpicdraw (3.895,-0.2)
+ --(4.02,-0.2)\dpicstop
+\dpicdraw[fill=black](4.02,-0.2) circle (0.007874in)\dpicstop
+\dpicdraw (3.895,-0.4)
+ --(4.02,-0.4)\dpicstop
+\dpicdraw[fill=black](4.02,-0.4) circle (0.007874in)\dpicstop
+\dpicdraw (2.048846,-0.5)
+ --(2.048846,-0.625)\dpicstop
+\dpicdraw[fill=black](2.048846,-0.625) circle (0.007874in)\dpicstop
+\dpicdraw (2.356538,-0.5)
+ --(2.356538,-0.625)\dpicstop
+\dpicdraw[fill=black](2.356538,-0.625) circle (0.007874in)\dpicstop
+\dpicdraw (2.510385,-0.5)
+ --(2.510385,-0.625)\dpicstop
+\dpicdraw[fill=black](2.510385,-0.625) circle (0.007874in)\dpicstop
+\dpicdraw (2.818077,-0.5)
+ --(2.818077,-0.625)\dpicstop
+\dpicdraw[fill=black](2.818077,-0.625) circle (0.007874in)\dpicstop
+\dpicdraw (2.971923,-0.5)
+ --(2.971923,-0.625)\dpicstop
+\dpicdraw[fill=black](2.971923,-0.625) circle (0.007874in)\dpicstop
+\dpicdraw (3.279615,-0.5)
+ --(3.279615,-0.625)\dpicstop
+\dpicdraw[fill=black](3.279615,-0.625) circle (0.007874in)\dpicstop
+\dpicdraw (3.433462,-0.5)
+ --(3.433462,-0.625)\dpicstop
+\dpicdraw[fill=black](3.433462,-0.625) circle (0.007874in)\dpicstop
+\dpicdraw (3.741154,-0.5)
+ --(3.741154,-0.625)\dpicstop
+\dpicdraw[fill=black](3.741154,-0.625) circle (0.007874in)\dpicstop
+\draw (1.77,0.25) node[left=1bp]{\sl W1a};
+\draw (1.77,-0.25) node[left=1bp]{\sl W1b};
+\draw (4.02,0.4) node[right=1bp]{\sl E1a};
+\draw (4.02,-0.4) node[right=1bp]{\sl E3b};
+\draw (2.180714,0.625) node[above=1bp]{\sl N1a};
+\draw (2.752143,0.625) node[above=1bp]{\sl N1b$\;\;$};
+\draw (3.037857,0.625) node[above=1bp]{\sl $\;\;$N2a};
+\draw (3.609286,0.625) node[above=1bp]{\sl N2b};
+\draw (2.048846,-0.625) node[below=1bp]{\sl S1a};
+\draw (3.741154,-0.625) node[below=1bp]{\sl S4b};
+\draw (2.895,-0.725) node{$\cdots$};
+\draw (4.17,0.05) node{$\vdots$};
+\dpicdraw (4.895,-0.166667) rectangle (5.395,0.166667)\dpicstop
+\dpicdraw (4.895,0)
+ --(4.77,0)\dpicstop
+\dpicdraw[fill=black](4.77,0) circle (0.007874in)\dpicstop
+\dpicdraw (5.395,0)
+ --(5.52,0)\dpicstop
+\dpicdraw[fill=black](5.52,0) circle (0.007874in)\dpicstop
+\dpicdraw (5.145,-0.166667)
+ --(5.145,-0.291667)\dpicstop
+\dpicdraw[fill=black](5.145,-0.291667) circle (0.007874in)\dpicstop
+\draw (4.77,0) node[left=1bp]{\sl W1};
+\draw (5.52,0) node[right=1bp]{\sl E1};
+\draw (5.145,-0.291667) node[below=1bp]{\sl S1};
+\draw (0.52,-0.55) node{\tt nport};
+\draw (2.895,-0.895) node{\tt nport(wid 2.0 ht 1 fill\_(0.9) "n-port",1,2,3,4)};
+\draw (5.145,-0.611667) node{\tt nterm};
+\end{tikzpicture}
+\vspace*{-0.5\baselineskip}
diff --git a/graphics/circuit_macros/doc/Nport.m4 b/graphics/circuit_macros/doc/NportMan.m4
index 37dbffeacc..37dbffeacc 100644
--- a/graphics/circuit_macros/doc/Nport.m4
+++ b/graphics/circuit_macros/doc/NportMan.m4
diff --git a/graphics/circuit_macros/doc/Opamp.m4 b/graphics/circuit_macros/doc/OpampMan.m4
index 5bdb8ac208..5bdb8ac208 100644
--- a/graphics/circuit_macros/doc/Opamp.m4
+++ b/graphics/circuit_macros/doc/OpampMan.m4
diff --git a/graphics/circuit_macros/doc/Pconn.tex b/graphics/circuit_macros/doc/Pconn.tex
new file mode 100644
index 0000000000..0bc608cbd9
--- /dev/null
+++ b/graphics/circuit_macros/doc/Pconn.tex
@@ -0,0 +1,462 @@
+\begin{tikzpicture}[scale=2.54]
+% dpic version 2020.03.01 option -g for TikZ and PGF 1.01
+\ifx\dpiclw\undefined\newdimen\dpiclw\fi
+\global\def\dpicdraw{\draw[line width=\dpiclw]}
+\global\def\dpicstop{;}
+\dpiclw=0.8bp
+\dpiclw=0.8bp
+\dpicdraw (0.598611,0.013889)
+ --(0.598611,0.263889)
+ --(0.098611,0.263889)
+ --(0.098611,-0.236111)
+ --(0.598611,-0.236111)
+ --(0.598611,0.013889)\dpicstop
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!0!black]
+\dpicdraw (0.469444,0.088889)
+ --(0.469444,0.163889)
+ --(0.427778,0.163889)
+ --(0.427778,0.013889)
+ --(0.469444,0.013889)
+ --(0.469444,0.088889)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!0!black]
+\dpicdraw (0.269444,0.088889)
+ --(0.269444,0.151389)
+ --(0.227778,0.151389)
+ --(0.227778,0.026389)
+ --(0.269444,0.026389)
+ --(0.269444,0.088889)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\fill[fill=black,line width=0bp](0.390278,-0.111111)
+ ..controls (0.390278,-0.088099) and (0.371623,-0.069444)
+ ..(0.348611,-0.069444)
+ ..controls (0.325599,-0.069444) and (0.306944,-0.088099)
+ ..(0.306944,-0.111111)--cycle
+\dpicstop
+\dpicdraw (0.390278,-0.111111)
+ ..controls (0.390278,-0.088099) and (0.371623,-0.069444)
+ ..(0.348611,-0.069444)
+ ..controls (0.325599,-0.069444) and (0.306944,-0.088099)
+ ..(0.306944,-0.111111)\dpicstop
+\fill[fill=black,line width=0bp](0.306944,-0.111111)
+ --(0.306944,-0.152778)
+ --(0.390278,-0.152778)
+ --(0.390278,-0.111111)--cycle
+\dpicstop
+\dpicdraw (0.306944,-0.111111)
+ --(0.306944,-0.152778)
+ --(0.390278,-0.152778)
+ --(0.390278,-0.111111)\dpicstop
+\dpiclw=0.4bp
+\filldraw[line width=0bp](0.161111,0.068889)
+ --(0.227778,0.088889)
+ --(0.161111,0.108889) --cycle\dpicstop
+\dpicdraw (0.218111,0.088889)
+ --(0.027778,0.088889)\dpicstop
+\draw (0.027778,0.088889) node[left=-2bp]{\sl H};
+\dpiclw=0.8bp
+\draw (0.348611,-0.236111) node[below=-2bp]{\tt pconnex(,A)};
+\dpicdraw (1.398611,0.013889)
+ --(1.398611,0.263889)
+ --(0.898611,0.263889)
+ --(0.898611,-0.236111)
+ --(1.398611,-0.236111)
+ --(1.398611,0.013889)\dpicstop
+\dpicdraw (1.069444,0.088889)
+ --(1.069444,0.163889)
+ --(1.027778,0.163889)
+ --(1.027778,0.013889)
+ --(1.069444,0.013889)
+ --(1.069444,0.088889)\dpicstop
+\dpicdraw (1.269444,0.088889)
+ --(1.269444,0.151389)
+ --(1.227778,0.151389)
+ --(1.227778,0.026389)
+ --(1.269444,0.026389)
+ --(1.269444,0.088889)\dpicstop
+\dpicdraw (1.190278,-0.111111)
+ ..controls (1.190278,-0.088099) and (1.171623,-0.069444)
+ ..(1.148611,-0.069444)
+ ..controls (1.125599,-0.069444) and (1.106944,-0.088099)
+ ..(1.106944,-0.111111)\dpicstop
+\dpicdraw (1.106944,-0.111111)
+ --(1.106944,-0.152778)
+ --(1.190278,-0.152778)
+ --(1.190278,-0.111111)\dpicstop
+\dpiclw=0.4bp
+\filldraw[line width=0bp](1.320129,0.136592)
+ --(1.269444,0.088889)
+ --(1.338017,0.100815) --cycle\dpicstop
+\dpicdraw (1.278091,0.093212)
+ --(1.469444,0.188889)\dpicstop
+\draw (1.469444,0.188889) node[right=-2bp]{\sl H};
+\draw (0.748611,0.188889) node{\sl N};
+\filldraw[line width=0bp](0.520518,0.136175)
+ --(0.469444,0.088889)
+ --(0.538113,0.100252) --cycle\dpicstop
+\dpicdraw (0.673611,0.188889)
+ --(0.478126,0.093141)\dpicstop
+\filldraw[line width=0bp](0.95911,0.100252)
+ --(1.027778,0.088889)
+ --(0.976704,0.136175) --cycle\dpicstop
+\dpicdraw (0.823611,0.188889)
+ --(1.019096,0.093141)\dpicstop
+\draw (0.748611,-0.061111) node{\sl G};
+\filldraw[line width=0bp](0.452454,-0.07983)
+ --(0.390278,-0.111111)
+ --(0.459406,-0.119221) --cycle\dpicstop
+\dpicdraw (0.673611,-0.061111)
+ --(0.399798,-0.109431)\dpicstop
+\filldraw[line width=0bp](1.037817,-0.119221)
+ --(1.106944,-0.111111)
+ --(1.044768,-0.07983) --cycle\dpicstop
+\dpicdraw (0.823611,-0.061111)
+ --(1.097425,-0.109431)\dpicstop
+\draw (1.148611,-0.236111) node[below=-2bp]{\tt (,AF)};
+\dpicdraw (1.848611,0.013889) circle (0.098425in)\dpicstop
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!0!black]
+\dpicdraw (1.969444,0.088889)
+ --(1.969444,0.163889)
+ --(1.927778,0.163889)
+ --(1.927778,0.013889)
+ --(1.969444,0.013889)
+ --(1.969444,0.088889)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!0!black]
+\dpicdraw (1.769444,0.088889)
+ --(1.769444,0.151389)
+ --(1.727778,0.151389)
+ --(1.727778,0.026389)
+ --(1.769444,0.026389)
+ --(1.769444,0.088889)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\fill[fill=black,line width=0bp](1.890278,-0.111111)
+ ..controls (1.890278,-0.088099) and (1.871623,-0.069444)
+ ..(1.848611,-0.069444)
+ ..controls (1.825599,-0.069444) and (1.806944,-0.088099)
+ ..(1.806944,-0.111111)--cycle
+\dpicstop
+\dpicdraw (1.890278,-0.111111)
+ ..controls (1.890278,-0.088099) and (1.871623,-0.069444)
+ ..(1.848611,-0.069444)
+ ..controls (1.825599,-0.069444) and (1.806944,-0.088099)
+ ..(1.806944,-0.111111)\dpicstop
+\fill[fill=black,line width=0bp](1.806944,-0.111111)
+ --(1.806944,-0.152778)
+ --(1.890278,-0.152778)
+ --(1.890278,-0.111111)--cycle
+\dpicstop
+\dpicdraw (1.806944,-0.111111)
+ --(1.806944,-0.152778)
+ --(1.890278,-0.152778)
+ --(1.890278,-0.111111)\dpicstop
+\draw (1.848611,-0.236111) node[below=-2bp]{\tt (,AC)};
+\dpicdraw (2.548611,0.013889) circle (0.098425in)\dpicstop
+\dpicdraw (2.469444,0.088889)
+ --(2.469444,0.163889)
+ --(2.427778,0.163889)
+ --(2.427778,0.013889)
+ --(2.469444,0.013889)
+ --(2.469444,0.088889)\dpicstop
+\dpicdraw (2.669444,0.088889)
+ --(2.669444,0.151389)
+ --(2.627778,0.151389)
+ --(2.627778,0.026389)
+ --(2.669444,0.026389)
+ --(2.669444,0.088889)\dpicstop
+\dpicdraw (2.590278,-0.111111)
+ ..controls (2.590278,-0.088099) and (2.571623,-0.069444)
+ ..(2.548611,-0.069444)
+ ..controls (2.525599,-0.069444) and (2.506944,-0.088099)
+ ..(2.506944,-0.111111)\dpicstop
+\dpicdraw (2.506944,-0.111111)
+ --(2.506944,-0.152778)
+ --(2.590278,-0.152778)
+ --(2.590278,-0.111111)\dpicstop
+\draw (2.548611,-0.236111) node[below=-2bp]{\tt (,ACF)};
+\dpicdraw (3.298611,-0.136111)
+ --(3.298611,0.163889)\dpicstop
+\dpicdraw (3.298611,0.163889)
+ ..controls (3.298611,0.246732) and (3.231454,0.313889)
+ ..(3.148611,0.313889)
+ ..controls (3.065768,0.313889) and (2.998611,0.246732)
+ ..(2.998611,0.163889)\dpicstop
+\dpicdraw (2.998611,0.163889)
+ --(2.998611,-0.136111)\dpicstop
+\dpicdraw (2.998611,-0.136111)
+ ..controls (2.998611,-0.336111) and (3.298611,-0.336111)
+ ..(3.298611,-0.136111)\dpicstop
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!0!black]
+\dpicdraw (3.148611,0.163889) circle (0.016404in)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!0!black]
+\dpicdraw (3.148611,-0.136111) circle (0.016404in)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\draw (3.148611,-0.286111) node[below=-2bp]{\tt (U,D)};
+\dpicdraw (3.798611,-0.136111)
+ --(3.798611,0.163889)\dpicstop
+\dpicdraw (3.798611,0.163889)
+ ..controls (3.798611,0.246732) and (3.731454,0.313889)
+ ..(3.648611,0.313889)
+ ..controls (3.565768,0.313889) and (3.498611,0.246732)
+ ..(3.498611,0.163889)\dpicstop
+\dpicdraw (3.498611,0.163889)
+ --(3.498611,-0.136111)\dpicstop
+\dpicdraw (3.498611,-0.136111)
+ ..controls (3.498611,-0.336111) and (3.798611,-0.336111)
+ ..(3.798611,-0.136111)\dpicstop
+\dpicdraw (3.648611,0.163889) circle (0.016404in)\dpicstop
+\dpicdraw (3.648611,-0.136111) circle (0.016404in)\dpicstop
+\draw (3.648611,-0.286111) node[below=-2bp]{\tt (U,DF)};
+\dpicdraw (4.248611,0.013889)
+ --(4.248611,0.263889)
+ --(3.998611,0.263889)
+ --(3.998611,-0.236111)
+ --(4.248611,-0.236111)
+ --(4.248611,0.013889)\dpicstop
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!0!black]
+\dpicdraw (4.123611,0.159722)
+ --(4.061111,0.159722)
+ --(4.061111,0.118056)
+ --(4.186111,0.118056)
+ --(4.186111,0.159722)
+ --(4.123611,0.159722)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!0!black]
+\dpicdraw (4.123611,-0.090278)
+ --(4.061111,-0.090278)
+ --(4.061111,-0.131944)
+ --(4.186111,-0.131944)
+ --(4.186111,-0.090278)
+ --(4.123611,-0.090278)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\draw (4.123611,-0.236111) node[below=-2bp]{\tt (U,J)};
+\dpicdraw (4.698611,0.013889)
+ --(4.698611,0.263889)
+ --(4.448611,0.263889)
+ --(4.448611,-0.236111)
+ --(4.698611,-0.236111)
+ --(4.698611,0.013889)\dpicstop
+\dpicdraw (4.573611,0.159722)
+ --(4.511111,0.159722)
+ --(4.511111,0.118056)
+ --(4.636111,0.118056)
+ --(4.636111,0.159722)
+ --(4.573611,0.159722)\dpicstop
+\dpicdraw (4.573611,-0.090278)
+ --(4.511111,-0.090278)
+ --(4.511111,-0.131944)
+ --(4.636111,-0.131944)
+ --(4.636111,-0.090278)
+ --(4.573611,-0.090278)\dpicstop
+\draw (4.573611,-0.236111) node[below=-2bp]{\tt (U,JF)};
+\dpiclw=0.8bp
+\dpicdraw (0.348611,-0.623611)
+ --(0.098611,-0.623611)
+ --(0.098611,-0.873611)
+ --(0.223611,-0.998611)
+ --(0.473611,-0.998611)
+ --(0.598611,-0.873611)
+ --(0.598611,-0.623611)
+ --(0.348611,-0.623611)\dpicstop
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!0!black]
+\dpicdraw (0.469444,-0.736111)
+ --(0.469444,-0.673611)
+ --(0.427778,-0.673611)
+ --(0.427778,-0.798611)
+ --(0.469444,-0.798611)
+ --(0.469444,-0.736111)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!0!black]
+\dpicdraw (0.269444,-0.736111)
+ --(0.269444,-0.673611)
+ --(0.227778,-0.673611)
+ --(0.227778,-0.798611)
+ --(0.269444,-0.798611)
+ --(0.269444,-0.736111)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!0!black]
+\dpicdraw (0.369444,-0.886111)
+ --(0.369444,-0.836111)
+ --(0.327778,-0.836111)
+ --(0.327778,-0.936111)
+ --(0.369444,-0.936111)
+ --(0.369444,-0.886111)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\draw (0.348611,-0.998611) node[below=-2bp]{\tt (,P)};
+\dpicdraw (1.048611,-0.623611)
+ --(0.798611,-0.623611)
+ --(0.798611,-0.873611)
+ --(0.923611,-0.998611)
+ --(1.173611,-0.998611)
+ --(1.298611,-0.873611)
+ --(1.298611,-0.623611)
+ --(1.048611,-0.623611)\dpicstop
+\dpicdraw (0.969444,-0.736111)
+ --(0.969444,-0.673611)
+ --(0.927778,-0.673611)
+ --(0.927778,-0.798611)
+ --(0.969444,-0.798611)
+ --(0.969444,-0.736111)\dpicstop
+\dpicdraw (1.169444,-0.736111)
+ --(1.169444,-0.673611)
+ --(1.127778,-0.673611)
+ --(1.127778,-0.798611)
+ --(1.169444,-0.798611)
+ --(1.169444,-0.736111)\dpicstop
+\dpicdraw (1.069444,-0.886111)
+ --(1.069444,-0.836111)
+ --(1.027778,-0.836111)
+ --(1.027778,-0.936111)
+ --(1.069444,-0.936111)
+ --(1.069444,-0.886111)\dpicstop
+\draw (1.048611,-0.998611) node[below=-2bp]{\tt (,PF)};
+\dpicdraw (1.823611,-0.511111)
+ --(2.148611,-0.511111)
+ --(2.148611,-0.691111)
+ --(1.913611,-1.111111)
+ --(1.733611,-1.111111)
+ --(1.498611,-0.691111)
+ --(1.498611,-0.511111)
+ --(1.823611,-0.511111)\dpicstop
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!0!black]
+\dpicdraw (1.719444,-0.661111)
+ --(1.719444,-0.629861)
+ --(1.594444,-0.629861)
+ --(1.594444,-0.692361)
+ --(1.719444,-0.692361)
+ --(1.719444,-0.661111)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!0!black]
+\dpicdraw (2.052778,-0.661111)
+ --(2.052778,-0.629861)
+ --(1.927778,-0.629861)
+ --(1.927778,-0.692361)
+ --(2.052778,-0.692361)
+ --(2.052778,-0.661111)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!0!black]
+\dpicdraw (1.854861,-0.977778)
+ --(1.854861,-0.915278)
+ --(1.792361,-0.915278)
+ --(1.792361,-1.040278)
+ --(1.854861,-1.040278)
+ --(1.854861,-0.977778)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\draw (1.823611,-1.111111) node[below=-2bp]{\tt (,G)};
+\dpicdraw (2.673611,-0.511111)
+ --(2.998611,-0.511111)
+ --(2.998611,-0.691111)
+ --(2.763611,-1.111111)
+ --(2.583611,-1.111111)
+ --(2.348611,-0.691111)
+ --(2.348611,-0.511111)
+ --(2.673611,-0.511111)\dpicstop
+\dpicdraw (2.569444,-0.661111)
+ --(2.569444,-0.629861)
+ --(2.444444,-0.629861)
+ --(2.444444,-0.692361)
+ --(2.569444,-0.692361)
+ --(2.569444,-0.661111)\dpicstop
+\dpicdraw (2.902778,-0.661111)
+ --(2.902778,-0.629861)
+ --(2.777778,-0.629861)
+ --(2.777778,-0.692361)
+ --(2.902778,-0.692361)
+ --(2.902778,-0.661111)\dpicstop
+\dpicdraw (2.704861,-0.977778)
+ --(2.704861,-0.915278)
+ --(2.642361,-0.915278)
+ --(2.642361,-1.040278)
+ --(2.704861,-1.040278)
+ --(2.704861,-0.977778)\dpicstop
+\draw (2.673611,-1.111111) node[below=-2bp]{\tt (,GF)};
+\dpicdraw (3.523611,-1.111111)
+ --(3.198611,-1.111111)
+ --(3.198611,-0.931111)
+ --(3.433611,-0.511111)
+ --(3.613611,-0.511111)
+ --(3.848611,-0.931111)
+ --(3.848611,-1.111111)
+ --(3.523611,-1.111111)\dpicstop
+\dpicdraw (3.627778,-0.961111)
+ --(3.627778,-0.992361)
+ --(3.752778,-0.992361)
+ --(3.752778,-0.929861)
+ --(3.627778,-0.929861)
+ --(3.627778,-0.961111)\dpicstop
+\dpicdraw (3.294444,-0.961111)
+ --(3.294444,-0.992361)
+ --(3.419444,-0.992361)
+ --(3.419444,-0.929861)
+ --(3.294444,-0.929861)
+ --(3.294444,-0.961111)\dpicstop
+\dpicdraw (3.492361,-0.644444)
+ --(3.492361,-0.706944)
+ --(3.554861,-0.706944)
+ --(3.554861,-0.581944)
+ --(3.492361,-0.581944)
+ --(3.492361,-0.644444)\dpicstop
+\draw (3.523611,-1.111111) node[below=-2bp]{\tt (L,GF)};
+\dpicdraw (4.373611,-0.811111) circle (0.127953in)\dpicstop
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!0!black]
+\dpicdraw (4.269444,-0.661111)
+ --(4.269444,-0.629861)
+ --(4.144444,-0.629861)
+ --(4.144444,-0.692361)
+ --(4.269444,-0.692361)
+ --(4.269444,-0.661111)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!0!black]
+\dpicdraw (4.602778,-0.661111)
+ --(4.602778,-0.629861)
+ --(4.477778,-0.629861)
+ --(4.477778,-0.692361)
+ --(4.602778,-0.692361)
+ --(4.602778,-0.661111)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!0!black]
+\dpicdraw (4.404861,-0.977778)
+ --(4.404861,-0.915278)
+ --(4.342361,-0.915278)
+ --(4.342361,-1.040278)
+ --(4.404861,-1.040278)
+ --(4.404861,-0.977778)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\draw (4.373611,-1.136111) node[below=-2bp]{\tt (,GC)};
+\end{tikzpicture}
+\vspace*{-0.5\baselineskip}
diff --git a/graphics/circuit_macros/doc/Pconn.m4 b/graphics/circuit_macros/doc/PconnMan.m4
index fbda5cc2e7..45a259636f 100644
--- a/graphics/circuit_macros/doc/Pconn.m4
+++ b/graphics/circuit_macros/doc/PconnMan.m4
@@ -19,27 +19,23 @@ P1: [
arrow from G.w to C1.G.e
arrow from G.e to C2.G.w
`"\tt (,AF)"' at last [].s below
- C03: pconnex(,AC) with .w at C2.e+(0.2,0)
+ C03: pconnex(,AC) with .w at C2.e+(0.25,0)
`"\tt (,AC)"' at last [].s below
C3: pconnex(,ACF) with .w at last [].e+(0.2,0)
`"\tt (,ACF)"' at last [].s below
- C5: pconnex(U,D) with .w at last [].e+(0.2,0)
+ C5: pconnex(U,D) with .w at last [].e+(0.25,0)
`"\tt (U,D)"' at last [].s below
- C6: pconnex(U,DF) with .w at last [].e+(0.2,0)
+ C6: pconnex(U,DF) with .w at last [].e+(0.25,0)
`"\tt (U,DF)"' at last [].s below
- C7: pconnex(U,J) with .w at last [].e+(0.2,0)
+ C7: pconnex(U,J) with .w at last [].e+(0.25,0)
`"\tt (U,J)"' at last [].s below
- C8: pconnex(U,JF) with .w at last [].e+(0.2,0)
+ C8: pconnex(U,JF) with .w at last [].e+(0.25,0)
`"\tt (U,JF)"' at last [].s below
]
P2: [
- C4: pconnex(,P)
- `"\tt (,P)"' at last [].s below
- C11: pconnex(,PF) with .w at last [].e+(0.2,0)
- `"\tt (,PF)"' at (C11,last "") below
- C9: pconnex(,G) with .w at last [].e+(0.2,0)
+ C9: pconnex(,G) #with .w at last [].e+(0.2,0)
`"\tt (,G)"' at last [].s below
C91: pconnex(,GF) with .w at last [].e+(0.2,0)
`"\tt (,GF)"' at last [].s below
@@ -47,6 +43,15 @@ P2: [
`"\tt (L,GF)"' at last [].s below
C10: pconnex(,GC) with .w at last [].e + (0.2,0)
`"\tt (,GC)"' ht 11pt__ at last [].s below
-] with .nw at P1.C1.sw + (0,-0.25)
+ C10: pconnex(,GCF) with .w at last [].e + (0.2,0)
+ `"\tt (,GCF)"' ht 11pt__ at last [].s below
+] with .nw at P1.C1.sw + (0,-0.35)
+
+P3: [
+ C4: pconnex(,P)
+ `"\tt (,P)"' at last [].s below
+ C11: pconnex(,PF) with .w at last [].e+(0.2,0)
+ `"\tt (,PF)"' at (C11,last "") below
+] with .nw at P2.C9.sw + (0,-0.35)
.PE
diff --git a/graphics/circuit_macros/doc/Relay.tex b/graphics/circuit_macros/doc/Relay.tex
new file mode 100644
index 0000000000..fca7a507b0
--- /dev/null
+++ b/graphics/circuit_macros/doc/Relay.tex
@@ -0,0 +1,198 @@
+\begin{tikzpicture}[scale=2.54]
+% dpic version 2020.03.01 option -g for TikZ and PGF 1.01
+\ifx\dpiclw\undefined\newdimen\dpiclw\fi
+\global\def\dpicdraw{\draw[line width=\dpiclw]}
+\global\def\dpicstop{;}
+\dpiclw=0.8bp
+\dpiclw=0.8bp
+\dpicdraw (0.291667,-0.227083)
+ --(0.291667,-0.102083)
+ --(0.166667,-0.102083)
+ --(0.166667,-0.352083)
+ --(0.291667,-0.352083)
+ --(0.291667,-0.227083)\dpicstop
+\dpicdraw (0.166667,-0.227083)
+ --(0,-0.227083)\dpicstop
+\dpicdraw (0.291667,-0.227083)
+ --(0.458333,-0.227083)\dpicstop
+\dpicdraw[fill=white](0.108333,0.185417) circle (0.007874in)\dpicstop
+\dpicdraw (0.128333,0.185417)
+ --(0.358333,0.185417)\dpicstop
+\filldraw[line width=0bp](0.275,0.26875)
+ --(0.316667,0.185417)
+ --(0.358333,0.26875) --cycle\dpicstop
+\dpicdraw (0.316667,0.197839)
+ --(0.316667,0.310417)
+ --(0.416667,0.310417)\dpicstop
+\filldraw[line width=0bp](0.358333,0.039583)
+ --(0.316667,0.122917)
+ --(0.275,0.039583) --cycle\dpicstop
+\dpicdraw (0.316667,0.110494)
+ --(0.316667,-0.002083)
+ --(0.416667,-0.002083)\dpicstop
+\draw (0,-0.227083) node[left=-2bp]{\sl V1};
+\draw (0.458333,-0.227083) node[right=-2bp]{\sl V2};
+\draw (0.088333,0.185417) node[left=-2bp]{\sl P1};
+\draw (0.416667,-0.002083) node[right=-2bp]{\sl O1};
+\draw (0.416667,0.310417) node[right=-2bp]{\sl C1};
+\draw (0.229167,-0.552083) node(S){\tt relay};
+\dpicdraw (1.391667,-0.227083)
+ --(1.391667,-0.102083)
+ --(1.266667,-0.102083)
+ --(1.266667,-0.352083)
+ --(1.391667,-0.352083)
+ --(1.391667,-0.227083)\dpicstop
+\dpicdraw (1.266667,-0.227083)
+ --(1.1,-0.227083)\dpicstop
+\dpicdraw (1.391667,-0.227083)
+ --(1.558333,-0.227083)\dpicstop
+\dpicdraw (1.304167,-0.14375)
+ --(1.304167,-0.202083)
+ --(1.354167,-0.202083)
+ --(1.354167,-0.252083)
+ --(1.304167,-0.252083)
+ --(1.304167,-0.310417)\dpicstop
+\dpicdraw[fill=white](1.208333,-0.002083) circle (0.007874in)\dpicstop
+\dpicdraw (1.228333,-0.002083)
+ --(1.458333,-0.002083)\dpicstop
+\filldraw[line width=0bp](1.375,0.08125)
+ --(1.416667,-0.002083)
+ --(1.458333,0.08125) --cycle\dpicstop
+\dpicdraw (1.416667,0.010339)
+ --(1.416667,0.122917)
+ --(1.516667,0.122917)\dpicstop
+\dpicdraw[fill=white](1.208333,0.247917) circle (0.007874in)\dpicstop
+\dpicdraw (1.228333,0.247917)
+ --(1.458333,0.247917)\dpicstop
+\filldraw[line width=0bp](1.375,0.33125)
+ --(1.416667,0.247917)
+ --(1.458333,0.33125) --cycle\dpicstop
+\dpicdraw (1.416667,0.260339)
+ --(1.416667,0.372917)
+ --(1.516667,0.372917)\dpicstop
+\dpicdraw[dash pattern=on 0.05in off 0.05in](1.343333,-0.052083)
+ --(1.343333,0.297917)\dpicstop
+\draw (1.188333,-0.002083) node[left=-2bp]{\sl P1};
+\draw (1.516667,0.122917) node[right=-2bp]{\sl C1};
+\draw (1.188333,0.247917) node[left=-2bp]{\sl P2};
+\draw (1.516667,0.372917) node[right=-2bp]{\sl C2};
+\draw (1.329167,-0.552083) node{\tt (2,CTh)};
+\dpicdraw (2.491667,-0.227083)
+ --(2.491667,-0.102083)
+ --(2.366667,-0.102083)
+ --(2.366667,-0.352083)
+ --(2.491667,-0.352083)
+ --(2.491667,-0.227083)\dpicstop
+\dpicdraw (2.366667,-0.227083)
+ --(2.2,-0.227083)\dpicstop
+\dpicdraw (2.491667,-0.227083)
+ --(2.658333,-0.227083)\dpicstop
+\dpicdraw[fill=white](2.308333,0.185417) circle (0.007874in)\dpicstop
+\dpicdraw (2.328333,0.185417)
+ --(2.558333,0.185417)\dpicstop
+\filldraw[line width=0bp](2.558333,0.039583)
+ --(2.516667,0.122917)
+ --(2.475,0.039583) --cycle\dpicstop
+\dpicdraw (2.516667,0.110494)
+ --(2.516667,-0.002083)
+ --(2.616667,-0.002083)\dpicstop
+\dpicdraw[fill=white](2.308333,0.497917) circle (0.007874in)\dpicstop
+\dpicdraw (2.328333,0.497917)
+ --(2.558333,0.497917)\dpicstop
+\filldraw[line width=0bp](2.558333,0.352083)
+ --(2.516667,0.435417)
+ --(2.475,0.352083) --cycle\dpicstop
+\dpicdraw (2.516667,0.422994)
+ --(2.516667,0.310417)
+ --(2.616667,0.310417)\dpicstop
+\dpicdraw[dash pattern=on 0.05in off 0.05in](2.443333,0.135417)
+ --(2.443333,0.547917)\dpicstop
+\draw (2.288333,0.185417) node[left=-2bp]{\sl P1};
+\draw (2.616667,-0.002083) node[right=-2bp]{\sl O1};
+\draw (2.288333,0.185417) node[left=-2bp]{\sl P1};
+\draw (2.616667,0.310417) node[right=-2bp]{\sl O2};
+\draw (2.429167,-0.552083) node{\tt (2,O)};
+\dpicdraw (3.591667,-0.227083)
+ --(3.591667,-0.102083)
+ --(3.466667,-0.102083)
+ --(3.466667,-0.352083)
+ --(3.591667,-0.352083)
+ --(3.591667,-0.227083)\dpicstop
+\dpicdraw (3.466667,-0.164583)
+ --(3.3,-0.164583)\dpicstop
+\dpicdraw (3.466667,-0.289583)
+ --(3.3,-0.289583)\dpicstop
+\dpicdraw[fill=white](3.408333,0.105972) circle (0.007874in)\dpicstop
+\dpicdraw[fill=white](3.616667,0.214028) circle (0.007874in)\dpicstop
+\dpicdraw[fill=white](3.616667,-0.002083) circle (0.007874in)\dpicstop
+\dpicdraw (3.428333,0.105972)
+ --(3.658333,0.105972)\dpicstop
+\dpicdraw[fill=white](3.408333,0.447083) circle (0.007874in)\dpicstop
+\dpicdraw[fill=white](3.616667,0.555139) circle (0.007874in)\dpicstop
+\dpicdraw[fill=white](3.616667,0.339028) circle (0.007874in)\dpicstop
+\dpicdraw (3.428333,0.447083)
+ --(3.658333,0.447083)\dpicstop
+\dpicdraw[dash pattern=on 0.05in off 0.05in](3.543333,0.055972)
+ --(3.543333,0.497083)\dpicstop
+\draw (3.3,-0.164583) node[left=-2bp]{\sl V1};
+\draw (3.3,-0.289583) node[left=-2bp]{\sl V2};
+\draw (3.388333,0.105972) node[left=-2bp]{\sl P1};
+\draw (3.636667,-0.002083) node[right=-2bp]{\sl O1};
+\draw (3.636667,0.186354) node[right=-2bp]{\sl C1};
+\draw (3.388333,0.447083) node[left=-2bp]{\sl P2};
+\draw (3.636667,0.339028) node[right=-2bp]{\sl O2};
+\draw (3.636667,0.527465) node[right=-2bp]{\sl C2};
+\draw (3.479167,-0.552083) node{\tt (2,PIAX)};
+\dpicdraw (4.691667,0.664583)
+ --(4.691667,0.789583)
+ --(4.566667,0.789583)
+ --(4.566667,0.539583)
+ --(4.691667,0.539583)
+ --(4.691667,0.664583)\dpicstop
+\dpicdraw (4.566667,0.664583)
+ --(4.4,0.664583)\dpicstop
+\dpicdraw (4.691667,0.664583)
+ --(4.858333,0.664583)\dpicstop
+\dpicdraw[fill=white](4.508333,0.252083) circle (0.007874in)\dpicstop
+\dpicdraw (4.528333,0.252083)
+ --(4.758333,0.252083)\dpicstop
+\filldraw[line width=0bp](4.758333,0.16875)
+ --(4.716667,0.252083)
+ --(4.675,0.16875) --cycle\dpicstop
+\dpicdraw (4.716667,0.239661)
+ --(4.716667,0.127083)
+ --(4.816667,0.127083)\dpicstop
+\filldraw[line width=0bp](4.675,0.397917)
+ --(4.716667,0.314583)
+ --(4.758333,0.397917) --cycle\dpicstop
+\dpicdraw (4.716667,0.327006)
+ --(4.716667,0.439583)
+ --(4.816667,0.439583)\dpicstop
+\dpicdraw[fill=white](4.508333,-0.185417) circle (0.007874in)\dpicstop
+\dpicdraw (4.528333,-0.185417)
+ --(4.758333,-0.185417)\dpicstop
+\filldraw[line width=0bp](4.758333,-0.26875)
+ --(4.716667,-0.185417)
+ --(4.675,-0.26875) --cycle\dpicstop
+\dpicdraw (4.716667,-0.197839)
+ --(4.716667,-0.310417)
+ --(4.816667,-0.310417)\dpicstop
+\filldraw[line width=0bp](4.675,-0.039583)
+ --(4.716667,-0.122917)
+ --(4.758333,-0.039583) --cycle\dpicstop
+\dpicdraw (4.716667,-0.110494)
+ --(4.716667,0.002083)
+ --(4.816667,0.002083)\dpicstop
+\dpicdraw[dash pattern=on 0.05in off 0.05in](4.643333,0.302083)
+ --(4.643333,-0.235417)\dpicstop
+\draw (4.4,0.664583) node[left=-2bp]{\sl V1};
+\draw (4.858333,0.664583) node[right=-2bp]{\sl V2};
+\draw (4.488333,0.252083) node[left=-2bp]{\sl P1};
+\draw (4.816667,0.439583) node[right=-2bp]{\sl O1};
+\draw (4.816667,0.127083) node[right=-2bp]{\sl C1};
+\draw (4.488333,-0.185417) node[left=-2bp]{\sl P2};
+\draw (4.816667,0.002083) node[right=-2bp]{\sl O2};
+\draw (4.816667,-0.310417) node[right=-2bp]{\sl C2};
+\draw (4.629167,-0.552083) node{\tt relay(2,R)};
+\end{tikzpicture}
+\vspace*{-0.5\baselineskip}
diff --git a/graphics/circuit_macros/doc/Relay.m4 b/graphics/circuit_macros/doc/RelayMan.m4
index 20c51ebb6a..20c51ebb6a 100644
--- a/graphics/circuit_macros/doc/Relay.m4
+++ b/graphics/circuit_macros/doc/RelayMan.m4
diff --git a/graphics/circuit_macros/doc/ShiftR.tex b/graphics/circuit_macros/doc/ShiftR.tex
new file mode 100644
index 0000000000..d6e49ca1bc
--- /dev/null
+++ b/graphics/circuit_macros/doc/ShiftR.tex
@@ -0,0 +1,285 @@
+\begin{tikzpicture}[scale=2.54]
+% dpic version 2020.03.01 option -g for TikZ and PGF 1.01
+\ifx\dpiclw\undefined\newdimen\dpiclw\fi
+\global\def\dpicdraw{\draw[line width=\dpiclw]}
+\global\def\dpicstop{;}
+\dpiclw=0.8bp
+\dpiclw=0.8bp
+ {\sf
+\dpicdraw (0.15,-0.45) rectangle (0.65,0.45)\dpicstop
+\draw (0.15,0.3) node[right=-3bp]{{\scriptsize S}};
+\dpicdraw (0.15,0.3)
+ --(0,0.3)\dpicstop
+\dpicdraw (0.15,-0.0375)
+ --(0.214952,0)
+ --(0.15,0.0375)\dpicstop
+\draw (0.214952,0) node[right=-3bp]{{\scriptsize CK}};
+\dpicdraw (0.1125,0) circle (0.014764in)\dpicstop
+\dpicdraw (0.075,0)
+ --(0,0)\dpicstop
+\draw (0.15,-0.3) node[right=-3bp]{{\scriptsize R}};
+\dpicdraw (0.15,-0.3)
+ --(0,-0.3)\dpicstop
+\draw (0.4,0.45) node[below=-3bp]{{\scriptsize PR}};
+\dpicdraw (0.4,0.4875) circle (0.014764in)\dpicstop
+\dpicdraw (0.4,0.525)
+ --(0.4,0.6)\dpicstop
+\draw (0.65,0.3) node[left=-3bp]{{\scriptsize Q}};
+\dpicdraw (0.65,0.3)
+ --(0.8,0.3)\dpicstop
+\draw (0.65,-0.3) node[left=-3bp]{{\scriptsize $\overline{\hbox{Q}}$}};
+\dpicdraw (0.65,-0.3)
+ --(0.8,-0.3)\dpicstop
+\draw (0.4,-0.45) node[above=-3bp]{{\scriptsize CLR}};
+\dpicdraw (0.4,-0.4875) circle (0.014764in)\dpicstop
+\dpicdraw (0.4,-0.525)
+ --(0.4,-0.6)\dpicstop
+\dpicdraw (0,0.3)
+ --(-0.175,0.2)
+ --(-0.175,0.4)
+ --(0,0.3)\dpicstop
+\dpicdraw (-0.2125,0.3) circle (0.014764in)\dpicstop
+\dpicdraw (-0.25,0.3)
+ --(-0.35,0.3)\dpicstop
+\dpicdraw[fill=black](-0.35,0.3) circle (0.007874in)\dpicstop
+\dpicdraw (-0.483333,0.3)
+ --(-0.658333,0.2)
+ --(-0.658333,0.4)
+ --(-0.483333,0.3)\dpicstop
+\dpicdraw (-0.445833,0.3) circle (0.014764in)\dpicstop
+\dpicdraw (-0.85,0.3)
+ --(-0.658333,0.3)\dpicstop
+\dpicdraw (-0.408333,0.3)
+ --(-0.35,0.3)\dpicstop
+\draw (-0.85,0.3) node(Serial)[left=-3bp]{\scriptsize\shortstack[r]{SERIAL\\ INPUT}};
+\dpicdraw (-0.35,0.3)
+ --(-0.35,-0.3)
+ --(0,-0.3)\dpicstop
+\dpicdraw (-0.483333,-0.6)
+ --(-0.658333,-0.7)
+ --(-0.658333,-0.5)
+ --(-0.483333,-0.6)\dpicstop
+\dpicdraw (-0.695833,-0.6) circle (0.014764in)\dpicstop
+\dpicdraw (-0.445833,-0.6) circle (0.014764in)\dpicstop
+\dpicdraw (-0.85,-0.6)
+ --(-0.733333,-0.6)\dpicstop
+\dpicdraw (-0.408333,-0.6)
+ --(-0.35,-0.6)\dpicstop
+\draw (-0.85,-0.6) node[left=-3bp]{$\overline{\hbox{\scriptsize CLEAR}}$};
+\dpicdraw (-0.483333,-0.9)
+ --(-0.658333,-1)
+ --(-0.658333,-0.8)
+ --(-0.483333,-0.9)\dpicstop
+\dpicdraw (-0.445833,-0.9) circle (0.014764in)\dpicstop
+\dpicdraw (-0.85,-0.9)
+ --(-0.658333,-0.9)\dpicstop
+\dpicdraw (-0.408333,-0.9)
+ --(-0.35,-0.9)\dpicstop
+\draw (-0.85,-0.9) node[left=-3bp]{\scriptsize CLOCK};
+\dpicdraw (0.95,-0.45) rectangle (1.45,0.45)\dpicstop
+\draw (0.95,0.3) node[right=-3bp]{{\scriptsize S}};
+\dpicdraw (0.95,0.3)
+ --(0.8,0.3)\dpicstop
+\dpicdraw (0.95,-0.0375)
+ --(1.014952,0)
+ --(0.95,0.0375)\dpicstop
+\draw (1.014952,0) node[right=-3bp]{{\scriptsize CK}};
+\dpicdraw (0.9125,0) circle (0.014764in)\dpicstop
+\dpicdraw (0.875,0)
+ --(0.8,0)\dpicstop
+\draw (0.95,-0.3) node[right=-3bp]{{\scriptsize R}};
+\dpicdraw (0.95,-0.3)
+ --(0.8,-0.3)\dpicstop
+\draw (1.2,0.45) node[below=-3bp]{{\scriptsize PR}};
+\dpicdraw (1.2,0.4875) circle (0.014764in)\dpicstop
+\dpicdraw (1.2,0.525)
+ --(1.2,0.6)\dpicstop
+\draw (1.45,0.3) node[left=-3bp]{{\scriptsize Q}};
+\dpicdraw (1.45,0.3)
+ --(1.6,0.3)\dpicstop
+\draw (1.45,-0.3) node[left=-3bp]{{\scriptsize $\overline{\hbox{Q}}$}};
+\dpicdraw (1.45,-0.3)
+ --(1.6,-0.3)\dpicstop
+\draw (1.2,-0.45) node[above=-3bp]{{\scriptsize CLR}};
+\dpicdraw (1.2,-0.4875) circle (0.014764in)\dpicstop
+\dpicdraw (1.2,-0.525)
+ --(1.2,-0.6)\dpicstop
+\dpicdraw (1.75,-0.45) rectangle (2.25,0.45)\dpicstop
+\draw (1.75,0.3) node[right=-3bp]{{\scriptsize S}};
+\dpicdraw (1.75,0.3)
+ --(1.6,0.3)\dpicstop
+\dpicdraw (1.75,-0.0375)
+ --(1.814952,0)
+ --(1.75,0.0375)\dpicstop
+\draw (1.814952,0) node[right=-3bp]{{\scriptsize CK}};
+\dpicdraw (1.7125,0) circle (0.014764in)\dpicstop
+\dpicdraw (1.675,0)
+ --(1.6,0)\dpicstop
+\draw (1.75,-0.3) node[right=-3bp]{{\scriptsize R}};
+\dpicdraw (1.75,-0.3)
+ --(1.6,-0.3)\dpicstop
+\draw (2,0.45) node[below=-3bp]{{\scriptsize PR}};
+\dpicdraw (2,0.4875) circle (0.014764in)\dpicstop
+\dpicdraw (2,0.525)
+ --(2,0.6)\dpicstop
+\draw (2.25,0.3) node[left=-3bp]{{\scriptsize Q}};
+\dpicdraw (2.25,0.3)
+ --(2.4,0.3)\dpicstop
+\draw (2.25,-0.3) node[left=-3bp]{{\scriptsize $\overline{\hbox{Q}}$}};
+\dpicdraw (2.25,-0.3)
+ --(2.4,-0.3)\dpicstop
+\draw (2,-0.45) node[above=-3bp]{{\scriptsize CLR}};
+\dpicdraw (2,-0.4875) circle (0.014764in)\dpicstop
+\dpicdraw (2,-0.525)
+ --(2,-0.6)\dpicstop
+\dpicdraw (2.55,-0.45) rectangle (3.05,0.45)\dpicstop
+\draw (2.55,0.3) node[right=-3bp]{{\scriptsize S}};
+\dpicdraw (2.55,0.3)
+ --(2.4,0.3)\dpicstop
+\dpicdraw (2.55,-0.0375)
+ --(2.614952,0)
+ --(2.55,0.0375)\dpicstop
+\draw (2.614952,0) node[right=-3bp]{{\scriptsize CK}};
+\dpicdraw (2.5125,0) circle (0.014764in)\dpicstop
+\dpicdraw (2.475,0)
+ --(2.4,0)\dpicstop
+\draw (2.55,-0.3) node[right=-3bp]{{\scriptsize R}};
+\dpicdraw (2.55,-0.3)
+ --(2.4,-0.3)\dpicstop
+\draw (2.8,0.45) node[below=-3bp]{{\scriptsize PR}};
+\dpicdraw (2.8,0.4875) circle (0.014764in)\dpicstop
+\dpicdraw (2.8,0.525)
+ --(2.8,0.6)\dpicstop
+\draw (3.05,0.3) node[left=-3bp]{{\scriptsize Q}};
+\dpicdraw (3.05,0.3)
+ --(3.2,0.3)\dpicstop
+\draw (3.05,-0.3) node[left=-3bp]{{\scriptsize $\overline{\hbox{Q}}$}};
+\dpicdraw (3.05,-0.3)
+ --(3.2,-0.3)\dpicstop
+\draw (2.8,-0.45) node[above=-3bp]{{\scriptsize CLR}};
+\dpicdraw (2.8,-0.4875) circle (0.014764in)\dpicstop
+\dpicdraw (2.8,-0.525)
+ --(2.8,-0.6)\dpicstop
+\dpicdraw (3.35,-0.45) rectangle (3.85,0.45)\dpicstop
+\draw (3.35,0.3) node[right=-3bp]{{\scriptsize S}};
+\dpicdraw (3.35,0.3)
+ --(3.2,0.3)\dpicstop
+\dpicdraw (3.35,-0.0375)
+ --(3.414952,0)
+ --(3.35,0.0375)\dpicstop
+\draw (3.414952,0) node[right=-3bp]{{\scriptsize CK}};
+\dpicdraw (3.3125,0) circle (0.014764in)\dpicstop
+\dpicdraw (3.275,0)
+ --(3.2,0)\dpicstop
+\draw (3.35,-0.3) node[right=-3bp]{{\scriptsize R}};
+\dpicdraw (3.35,-0.3)
+ --(3.2,-0.3)\dpicstop
+\draw (3.6,0.45) node[below=-3bp]{{\scriptsize PR}};
+\dpicdraw (3.6,0.4875) circle (0.014764in)\dpicstop
+\dpicdraw (3.6,0.525)
+ --(3.6,0.6)\dpicstop
+\draw (3.85,0.3) node[left=-3bp]{{\scriptsize Q}};
+\dpicdraw (3.85,0.3)
+ --(4,0.3)\dpicstop
+\draw (3.6,-0.45) node[above=-3bp]{{\scriptsize CLR}};
+\dpicdraw (3.6,-0.4875) circle (0.014764in)\dpicstop
+\dpicdraw (3.6,-0.525)
+ --(3.6,-0.6)\dpicstop
+\draw (4,0.3) node[right=-3bp]{\scriptsize OUTPUT};
+\dpicdraw (-0.35,-0.6)
+ --(3.6,-0.6)\dpicstop
+\dpicdraw (0,0)
+ --(0,-0.9)\dpicstop
+\dpicdraw[fill=black](0,-0.9) circle (0.007874in)\dpicstop
+\dpicdraw (0.25,0.825)
+ --(0.25,1.025)
+ --(0.55,1.025)
+ --(0.55,0.825)\dpicstop
+\dpicdraw (0.55,0.825)
+ ..controls (0.55,0.625) and (0.25,0.625)
+ ..(0.25,0.825)\dpicstop
+\dpicdraw (0.4,0.6375) circle (0.014764in)\dpicstop
+\dpicdraw (0.325,1.025)
+ --(0.325,1.125)\dpicstop
+\dpicdraw (0.475,1.025)
+ --(0.475,1.325)\dpicstop
+\draw (0.475,1.325) node[left=-3bp]{\scriptsize PR4};
+\dpicdraw[fill=black](0.325,1.125) circle (0.007874in)\dpicstop
+\dpicdraw[fill=black](0.4,-0.6) circle (0.007874in)\dpicstop
+\dpicdraw (0.8,0)
+ --(0.8,-0.9)\dpicstop
+\dpicdraw[fill=black](0.8,-0.9) circle (0.007874in)\dpicstop
+\dpicdraw (1.05,0.825)
+ --(1.05,1.025)
+ --(1.35,1.025)
+ --(1.35,0.825)\dpicstop
+\dpicdraw (1.35,0.825)
+ ..controls (1.35,0.625) and (1.05,0.625)
+ ..(1.05,0.825)\dpicstop
+\dpicdraw (1.2,0.6375) circle (0.014764in)\dpicstop
+\dpicdraw (1.125,1.025)
+ --(1.125,1.125)\dpicstop
+\dpicdraw (1.275,1.025)
+ --(1.275,1.325)\dpicstop
+\draw (1.275,1.325) node[left=-3bp]{\scriptsize PR3};
+\dpicdraw[fill=black](1.125,1.125) circle (0.007874in)\dpicstop
+\dpicdraw[fill=black](1.2,-0.6) circle (0.007874in)\dpicstop
+\dpicdraw (1.6,0)
+ --(1.6,-0.9)\dpicstop
+\dpicdraw[fill=black](1.6,-0.9) circle (0.007874in)\dpicstop
+\dpicdraw (1.85,0.825)
+ --(1.85,1.025)
+ --(2.15,1.025)
+ --(2.15,0.825)\dpicstop
+\dpicdraw (2.15,0.825)
+ ..controls (2.15,0.625) and (1.85,0.625)
+ ..(1.85,0.825)\dpicstop
+\dpicdraw (2,0.6375) circle (0.014764in)\dpicstop
+\dpicdraw (1.925,1.025)
+ --(1.925,1.125)\dpicstop
+\dpicdraw (2.075,1.025)
+ --(2.075,1.325)\dpicstop
+\draw (2.075,1.325) node[left=-3bp]{\scriptsize PR2};
+\dpicdraw[fill=black](1.925,1.125) circle (0.007874in)\dpicstop
+\dpicdraw[fill=black](2,-0.6) circle (0.007874in)\dpicstop
+\dpicdraw (2.4,0)
+ --(2.4,-0.9)\dpicstop
+\dpicdraw[fill=black](2.4,-0.9) circle (0.007874in)\dpicstop
+\dpicdraw (2.65,0.825)
+ --(2.65,1.025)
+ --(2.95,1.025)
+ --(2.95,0.825)\dpicstop
+\dpicdraw (2.95,0.825)
+ ..controls (2.95,0.625) and (2.65,0.625)
+ ..(2.65,0.825)\dpicstop
+\dpicdraw (2.8,0.6375) circle (0.014764in)\dpicstop
+\dpicdraw (2.725,1.025)
+ --(2.725,1.125)\dpicstop
+\dpicdraw (2.875,1.025)
+ --(2.875,1.325)\dpicstop
+\draw (2.875,1.325) node[left=-3bp]{\scriptsize PR1};
+\dpicdraw[fill=black](2.725,1.125) circle (0.007874in)\dpicstop
+\dpicdraw[fill=black](2.8,-0.6) circle (0.007874in)\dpicstop
+\dpicdraw (3.2,0)
+ --(3.2,-0.9)\dpicstop
+\dpicdraw (3.2,-0.9)
+ --(-0.35,-0.9)\dpicstop
+\dpicdraw (3.45,0.825)
+ --(3.45,1.025)
+ --(3.75,1.025)
+ --(3.75,0.825)\dpicstop
+\dpicdraw (3.75,0.825)
+ ..controls (3.75,0.625) and (3.45,0.625)
+ ..(3.45,0.825)\dpicstop
+\dpicdraw (3.6,0.6375) circle (0.014764in)\dpicstop
+\dpicdraw (3.525,1.025)
+ --(3.525,1.125)\dpicstop
+\dpicdraw (3.675,1.025)
+ --(3.675,1.325)\dpicstop
+\draw (3.675,1.325) node[left=-3bp]{\scriptsize PR0};
+\dpicdraw (3.525,1.125)
+ --(-0.85,1.125)\dpicstop
+\draw (-0.85,1.125) node[left=-3bp]{\scriptsize\shortstack[r]{PRESET\\ ENABLE}};
+ }
+\end{tikzpicture}
+\vspace*{-0.5\baselineskip}
diff --git a/graphics/circuit_macros/doc/ShiftR.m4 b/graphics/circuit_macros/doc/ShiftRMan.m4
index e7bf1f0c5c..e7bf1f0c5c 100644
--- a/graphics/circuit_macros/doc/ShiftR.m4
+++ b/graphics/circuit_macros/doc/ShiftRMan.m4
diff --git a/graphics/circuit_macros/doc/Sources.tex b/graphics/circuit_macros/doc/Sources.tex
new file mode 100644
index 0000000000..55e57cbaf4
--- /dev/null
+++ b/graphics/circuit_macros/doc/Sources.tex
@@ -0,0 +1,466 @@
+\begin{tikzpicture}[scale=2.54]
+% dpic version 2020.03.01 option -g for TikZ and PGF 1.01
+\ifx\dpiclw\undefined\newdimen\dpiclw\fi
+\global\def\dpicdraw{\draw[line width=\dpiclw]}
+\global\def\dpicstop{;}
+\dpiclw=0.8bp
+\dpiclw=0.8bp
+ {\sf
+\dpicdraw (0,0)
+ --(0.25,0)\dpicstop
+\dpicdraw (0.375,0) circle (0.049213in)\dpicstop
+\dpicdraw (0.5,0)
+ --(0.75,0)\dpicstop
+\draw (0.777674,0) node[right=-2bp]{source};
+\dpicdraw (0,-0.275)
+ --(0.25,-0.275)\dpicstop
+\dpicdraw (0.375,-0.275) circle (0.049213in)\dpicstop
+\filldraw[line width=0bp](0.36875,-0.3)
+ --(0.46875,-0.275)
+ --(0.36875,-0.25) --cycle\dpicstop
+\dpicdraw (0.28125,-0.275)
+ --(0.445844,-0.275)\dpicstop
+\dpicdraw (0.5,-0.275)
+ --(0.75,-0.275)\dpicstop
+\draw (0.777674,-0.275) node[right=-2bp]{source(,I)};
+\dpicdraw (0,-0.55)
+ --(0.25,-0.55)\dpicstop
+\dpicdraw (0.375,-0.55) circle (0.049213in)\dpicstop
+\dpicdraw (0.375,-0.675)
+ --(0.375,-0.425)\dpicstop
+\dpicdraw (0.5,-0.55)
+ --(0.75,-0.55)\dpicstop
+\draw (0.777674,-0.55) node[right=-2bp]{source(,i)};
+\dpicdraw (0,-0.825)
+ --(0.25,-0.825)\dpicstop
+\dpicdraw (0.375,-0.825) circle (0.049213in)\dpicstop
+\draw (0.3125,-0.825) node{$_-$};
+\draw (0.4375,-0.825) node{$_+$};
+\dpicdraw (0.5,-0.825)
+ --(0.75,-0.825)\dpicstop
+\draw (0.777674,-0.825) node[right=-2bp]{source(,V)};
+\dpicdraw (0,-1.1)
+ --(0.25,-1.1)\dpicstop
+\dpicdraw (0.375,-1.1) circle (0.049213in)\dpicstop
+\dpicdraw (0.25,-1.1)
+ --(0.5,-1.1)\dpicstop
+\dpicdraw (0.5,-1.1)
+ --(0.75,-1.1)\dpicstop
+\draw (0.777674,-1.1) node[right=-2bp]{source(,v)};
+\dpicdraw (0,-1.375)
+ --(0.25,-1.375)\dpicstop
+\dpicdraw (0.375,-1.375) circle (0.049213in)\dpicstop
+\dpicdraw (0.25,-1.375)
+ ..controls (0.319036,-1.375) and (0.375,-1.319036)
+ ..(0.375,-1.25)\dpicstop
+\dpicdraw (0.5,-1.375)
+ --(0.75,-1.375)\dpicstop
+\draw (0.777674,-1.375) node[right=-2bp]{source(,SC)};
+\dpicdraw (0,-1.65)
+ --(0.25,-1.65)\dpicstop
+\dpicdraw (0.375,-1.65) circle (0.049213in)\dpicstop
+\dpicdraw (0.375,-1.65)
+ ..controls (0.375,-1.626988) and (0.356345,-1.608333)
+ ..(0.333333,-1.608333)
+ ..controls (0.310321,-1.608333) and (0.291667,-1.626988)
+ ..(0.291667,-1.65)\dpicstop
+\dpicdraw (0.375,-1.65)
+ ..controls (0.375,-1.673012) and (0.393655,-1.691667)
+ ..(0.416667,-1.691667)
+ ..controls (0.439679,-1.691667) and (0.458333,-1.673012)
+ ..(0.458333,-1.65)\dpicstop
+\dpicdraw (0.583333,-1.65)
+ --(0.833333,-1.65)\dpicstop
+\draw (0.777674,-1.65) node[right=-2bp]{source(,AC)};
+\dpicdraw (0,-1.925)
+ --(0.25,-1.925)\dpicstop
+\dpicdraw (0.375,-1.925) circle (0.049213in)\dpicstop
+\dpicdraw (0.286612,-1.836612)
+ --(0.463388,-2.013388)\dpicstop
+\dpicdraw (0.286612,-2.013388)
+ --(0.463388,-1.836612)\dpicstop
+\dpicdraw (0.5,-1.925)
+ --(0.75,-1.925)\dpicstop
+\draw (0.777674,-1.925) node[right=-2bp]{source(,X)};
+\dpicdraw (0,-2.2)
+ --(0.25,-2.2)\dpicstop
+\dpicdraw (0.375,-2.2) circle (0.049213in)\dpicstop
+\dpicdraw (0.25,-2.2)
+ --(0.3125,-2.2)\dpicstop
+\dpicdraw (0.3125,-2.2625)
+ --(0.3125,-2.1375)\dpicstop
+\dpicdraw (0.4375,-2.2625)
+ --(0.4375,-2.1375)\dpicstop
+\dpicdraw (0.5,-2.2)
+ --(0.4375,-2.2)\dpicstop
+\dpicdraw (0.5,-2.2)
+ --(0.75,-2.2)\dpicstop
+\draw (0.777674,-2.2) node[right=-2bp]{source(,F)};
+\dpicdraw (0,-2.475)
+ --(0.1875,-2.475)\dpicstop
+\dpicdraw (0.3125,-2.475) circle (0.049213in)\dpicstop
+\dpicdraw (0.4375,-2.475) circle (0.049213in)\dpicstop
+\dpicdraw (0.5625,-2.475)
+ --(0.75,-2.475)\dpicstop
+\draw (0.777674,-2.475) node[right=-2bp]{source(,G)};
+\dpicdraw (0,-2.75)
+ --(0.1875,-2.75)\dpicstop
+\dpicdraw (0.3125,-2.75) circle (0.049213in)\dpicstop
+\dpicdraw (0.375,-2.858253)
+ ..controls (0.458333,-2.906366) and (0.5625,-2.846225)
+ ..(0.5625,-2.75)
+ ..controls (0.5625,-2.653775) and (0.458333,-2.593634)
+ ..(0.375,-2.641747)\dpicstop
+\dpicdraw (0.5625,-2.75)
+ --(0.75,-2.75)\dpicstop
+\draw (0.777674,-2.75) node[right=-2bp]{source(,Q)};
+\dpicdraw (2,0)
+ --(2.175,0)\dpicstop
+\dpicdraw (2.375,0) circle (0.07874in)\dpicstop
+\dpicdraw (2.575,0)
+ --(2.75,0)\dpicstop
+\draw (2.777674,0) node[right=-2bp]{source(,{,}0.4)};
+\dpicdraw (2,-0.35)
+ --(2.25,-0.35)\dpicstop
+\dpicdraw (2.375,-0.35) circle (0.049213in)\dpicstop
+\dpicdraw (2.3125,-0.38125)
+ --(2.34375,-0.38125)
+ --(2.34375,-0.31875)
+ --(2.40625,-0.31875)
+ --(2.40625,-0.38125)
+ --(2.4375,-0.38125)\dpicstop
+\dpicdraw (2.5,-0.35)
+ --(2.75,-0.35)\dpicstop
+\draw (2.777674,-0.35) node[right=-2bp]{source(,P)};
+\dpicdraw (2,-0.625)
+ --(2.25,-0.625)\dpicstop
+\dpicdraw (2.375,-0.625) circle (0.049213in)\dpicstop
+\dpicdraw (2.3125,-0.625)
+ --(2.3125,-0.583333)
+ --(2.375,-0.583333)
+ --(2.375,-0.666667)
+ --(2.4375,-0.666667)
+ --(2.4375,-0.625)\dpicstop
+\dpicdraw (2.5,-0.625)
+ --(2.75,-0.625)\dpicstop
+\draw (2.777674,-0.625) node[right=-2bp]{source(,U)};
+\dpicdraw (2,-0.9)
+ --(2.25,-0.9)\dpicstop
+\dpicdraw (2.375,-0.9) circle (0.049213in)\dpicstop
+\dpicdraw (2.3125,-0.941667)
+ --(2.375,-0.941667)
+ --(2.375,-0.858333)
+ --(2.4375,-0.858333)\dpicstop
+\dpicdraw (2.5,-0.9)
+ --(2.75,-0.9)\dpicstop
+\draw (2.777674,-0.9) node[right=-2bp]{source(,H)};
+\dpicdraw (2,-1.175)
+ --(2.25,-1.175)\dpicstop
+\dpicdraw (2.375,-1.175) circle (0.049213in)\dpicstop
+\dpicdraw (2.291667,-1.216667)
+ --(2.416667,-1.1125)
+ --(2.416667,-1.216667)\dpicstop
+\dpicdraw (2.5,-1.175)
+ --(2.75,-1.175)\dpicstop
+\draw (2.777674,-1.175) node[right=-2bp]{source(,R)};
+\dpicdraw (2,-1.45)
+ --(2.25,-1.45)\dpicstop
+\dpicdraw (2.375,-1.45) circle (0.049213in)\dpicstop
+\dpicdraw (2.291667,-1.45)
+ ..controls (2.29302,-1.447174) and (2.295417,-1.442207)
+ ..(2.297014,-1.438918)
+ ..controls (2.298611,-1.435629) and (2.301248,-1.430362)
+ ..(2.302897,-1.427166)
+ ..controls (2.304546,-1.423971) and (2.307453,-1.418784)
+ ..(2.309383,-1.415594)
+ ..controls (2.311313,-1.412404) and (2.314426,-1.40787)
+ ..(2.316328,-1.405477)
+ ..controls (2.31823,-1.403084) and (2.3213,-1.399943)
+ ..(2.323177,-1.398468)
+ ..controls (2.325054,-1.396994) and (2.328093,-1.395392)
+ ..(2.329956,-1.394895)
+ ..controls (2.33182,-1.394398) and (2.334847,-1.394398)
+ ..(2.33671,-1.394895)
+ ..controls (2.338574,-1.395392) and (2.341612,-1.396994)
+ ..(2.34349,-1.398468)
+ ..controls (2.345367,-1.399943) and (2.348437,-1.403084)
+ ..(2.350339,-1.405477)
+ ..controls (2.352241,-1.40787) and (2.355353,-1.412404)
+ ..(2.357283,-1.415594)
+ ..controls (2.359213,-1.418784) and (2.362369,-1.424451)
+ ..(2.364323,-1.428239)
+ ..controls (2.366277,-1.432026) and (2.369464,-1.438441)
+ ..(2.371432,-1.442551)
+ ..controls (2.373401,-1.446661) and (2.376599,-1.453339)
+ ..(2.378568,-1.457449)
+ ..controls (2.380536,-1.461559) and (2.383723,-1.467974)
+ ..(2.385677,-1.471761)
+ ..controls (2.387631,-1.475549) and (2.390787,-1.481216)
+ ..(2.392717,-1.484406)
+ ..controls (2.394647,-1.487596) and (2.397759,-1.49213)
+ ..(2.399661,-1.494523)
+ ..controls (2.401563,-1.496916) and (2.404633,-1.500057)
+ ..(2.40651,-1.501532)
+ ..controls (2.408388,-1.503006) and (2.411426,-1.504608)
+ ..(2.41329,-1.505105)
+ ..controls (2.415153,-1.505602) and (2.41818,-1.505602)
+ ..(2.420044,-1.505105)
+ ..controls (2.421907,-1.504608) and (2.424946,-1.503006)
+ ..(2.426823,-1.501532)
+ ..controls (2.4287,-1.500057) and (2.43177,-1.496916)
+ ..(2.433672,-1.494523)
+ ..controls (2.435574,-1.49213) and (2.438687,-1.487596)
+ ..(2.440617,-1.484406)
+ ..controls (2.442547,-1.481216) and (2.445454,-1.476029)
+ ..(2.447103,-1.472834)
+ ..controls (2.448752,-1.469638) and (2.451389,-1.464371)
+ ..(2.452986,-1.461082)
+ ..controls (2.454583,-1.457793) and (2.45698,-1.452826)
+ ..(2.458333,-1.45)\dpicstop
+\dpicdraw (2.583333,-1.45)
+ --(2.833333,-1.45)\dpicstop
+\draw (2.777674,-1.45) node[right=-2bp]{source(,S)};
+\dpicdraw (2,-1.725)
+ --(2.25,-1.725)\dpicstop
+\dpicdraw (2.375,-1.725) circle (0.049213in)\dpicstop
+\dpicdraw (2.25,-1.725)
+ ..controls (2.319036,-1.725) and (2.375,-1.780964)
+ ..(2.375,-1.85)\dpicstop
+\dpicdraw (2.5,-1.725)
+ --(2.75,-1.725)\dpicstop
+\draw (2.777674,-1.725) node[right=-2bp]{source(,SCr)};
+\dpicdraw (2,-2)
+ --(2.25,-2)\dpicstop
+\dpicdraw (2.375,-2) circle (0.049213in)\dpicstop
+\dpicdraw (2.28125,-2.03125)
+ --(2.34375,-1.96875)
+ --(2.40625,-2.03125)
+ --(2.46875,-1.96875)\dpicstop
+\dpicdraw (2.5,-2)
+ --(2.75,-2)\dpicstop
+\draw (2.777674,-2) node[right=-2bp]{source(,T)};
+\dpicdraw (2,-2.275)
+ --(2.25,-2.275)\dpicstop
+\dpicdraw (2.375,-2.275) circle (0.049213in)\dpicstop
+\dpicdraw (2.25,-2.275)
+ --(2.34375,-2.275)\dpicstop
+\dpicdraw[line width=0.4bp](2.34375,-2.275) circle (0.00109in)\dpicstop
+\dpicdraw (2.34375,-2.275)
+ --(2.348958,-2.233333)
+ ..controls (2.352431,-2.205556) and (2.361111,-2.191667)
+ ..(2.375,-2.191667)
+ ..controls (2.388889,-2.191667) and (2.397569,-2.205556)
+ ..(2.401042,-2.233333)
+ --(2.40625,-2.275)\dpicstop
+\dpicdraw[line width=0.4bp](2.40625,-2.275) circle (0.00109in)\dpicstop
+\dpicdraw (2.40625,-2.275)
+ --(2.5,-2.275)\dpicstop
+\dpicdraw (2.5,-2.275)
+ --(2.75,-2.275)\dpicstop
+\draw (2.777674,-2.275) node[right=-2bp]{source(,L)};
+\dpicdraw (2,-2.55)
+ --(2.25,-2.55)\dpicstop
+\dpicdraw (2.375,-2.55) circle (0.049213in)\dpicstop
+\dpicdraw (2.25,-2.55)
+ --(2.291667,-2.55)\dpicstop
+\dpicdraw[line width=0.4bp](2.291667,-2.55) circle (0.00109in)\dpicstop
+\dpicdraw (2.291667,-2.55)
+ ..controls (2.291667,-2.584518) and (2.319649,-2.6125)
+ ..(2.354167,-2.6125)
+ ..controls (2.388684,-2.6125) and (2.416667,-2.584518)
+ ..(2.416667,-2.55)\dpicstop
+\dpicdraw (2.416667,-2.55)
+ ..controls (2.416667,-2.526988) and (2.398012,-2.508333)
+ ..(2.375,-2.508333)
+ ..controls (2.351988,-2.508333) and (2.333333,-2.526988)
+ ..(2.333333,-2.55)\dpicstop
+\dpicdraw (2.333333,-2.55)
+ ..controls (2.333333,-2.584518) and (2.361316,-2.6125)
+ ..(2.395833,-2.6125)
+ ..controls (2.430351,-2.6125) and (2.458333,-2.584518)
+ ..(2.458333,-2.55)\dpicstop
+\dpicdraw[line width=0.4bp](2.458333,-2.55) circle (0.00109in)\dpicstop
+\dpicdraw (2.458333,-2.55)
+ --(2.5,-2.55)\dpicstop
+\dpicdraw (2.5,-2.55)
+ --(2.75,-2.55)\dpicstop
+\draw (2.777674,-2.55) node[right=-2bp]{source(,B)};
+\dpicdraw (2,-2.77)
+ --(2.25,-2.77)\dpicstop
+\dpicdraw (2.375,-2.7075)
+ ..controls (2.39675,-2.7075) and (2.430875,-2.714063)
+ ..(2.45625,-2.723125)
+ ..controls (2.481625,-2.732188) and (2.5,-2.751875)
+ ..(2.5,-2.77)
+ ..controls (2.5,-2.788125) and (2.481625,-2.807813)
+ ..(2.45625,-2.816875)
+ ..controls (2.430875,-2.825938) and (2.39675,-2.8325)
+ ..(2.375,-2.8325)
+ ..controls (2.35325,-2.8325) and (2.319125,-2.825938)
+ ..(2.29375,-2.816875)
+ ..controls (2.268375,-2.807813) and (2.25,-2.788125)
+ ..(2.25,-2.77)
+ ..controls (2.25,-2.751875) and (2.268375,-2.732188)
+ ..(2.29375,-2.723125)
+ ..controls (2.319125,-2.714063) and (2.35325,-2.7075)
+ ..(2.375,-2.7075)\dpicstop
+\dpicdraw (2.5,-2.77)
+ --(2.75,-2.77)\dpicstop
+\draw (2.777674,-2.77) node[right=-2bp]{nullator};
+\dpicdraw (2,-2.935)
+ --(2.25,-2.935)\dpicstop
+\dpicdraw (2.375,-2.935)
+ --(2.34375,-2.90375)
+ ..controls (2.322917,-2.882917) and (2.302083,-2.8725)
+ ..(2.28125,-2.8725)
+ ..controls (2.260417,-2.8725) and (2.25,-2.893333)
+ ..(2.25,-2.935)
+ ..controls (2.25,-2.976667) and (2.260417,-2.9975)
+ ..(2.28125,-2.9975)
+ ..controls (2.302083,-2.9975) and (2.322917,-2.987083)
+ ..(2.34375,-2.96625)
+ --(2.375,-2.935)\dpicstop
+\dpicdraw (2.375,-2.935)
+ --(2.40625,-2.90375)
+ ..controls (2.427083,-2.882917) and (2.447917,-2.8725)
+ ..(2.46875,-2.8725)
+ ..controls (2.489583,-2.8725) and (2.5,-2.893333)
+ ..(2.5,-2.935)
+ ..controls (2.5,-2.976667) and (2.489583,-2.9975)
+ ..(2.46875,-2.9975)
+ ..controls (2.447917,-2.9975) and (2.427083,-2.987083)
+ ..(2.40625,-2.96625)
+ --(2.375,-2.935)\dpicstop
+\dpicdraw (2.5,-2.935)
+ --(2.75,-2.935)\dpicstop
+\draw (2.777674,-2.935) node[right=-2bp]{norator};
+\dpicdraw (4,0)
+ --(4.25,0)\dpicstop
+\dpicdraw (4.375,0) circle (0.049213in)\dpicstop
+\dpicdraw (4.25,0)
+ --(4.3125,0)\dpicstop
+\dpicdraw (4.396376,-0.058731)
+ --(4.396376,0.058731)\dpicstop
+\dpicdraw[line width=0.4bp](4.396376,0.058731) circle (0.00109in)\dpicstop
+\dpicdraw (4.396376,0.058731)
+ ..controls (4.451208,0.038774) and (4.451208,-0.038774)
+ ..(4.396376,-0.058731)\dpicstop
+\dpicdraw[line width=0.4bp](4.396376,-0.058731) circle (0.00109in)\dpicstop
+\dpicdraw (4.353624,0.058731)
+ --(4.353624,-0.058731)\dpicstop
+\dpicdraw[line width=0.4bp](4.353624,-0.058731) circle (0.00109in)\dpicstop
+\dpicdraw (4.353624,-0.058731)
+ ..controls (4.298792,-0.038774) and (4.298792,0.038774)
+ ..(4.353624,0.058731)\dpicstop
+\dpicdraw[line width=0.4bp](4.353624,0.058731) circle (0.00109in)\dpicstop
+\dpicdraw (4.4375,0)
+ --(4.5,0)\dpicstop
+\dpicdraw (4.5,0)
+ --(4.75,0)\dpicstop
+\draw (4.777674,0) node[right=-2bp]{source(,N)};
+\dpicdraw (4,-0.275)
+ --(4.25,-0.275)\dpicstop
+\dpicdraw (4.375,-0.275) circle (0.049213in)\dpicstop
+\draw (4.375,-0.275) node{\rm mA};
+\dpicdraw (4.5,-0.275)
+ --(4.75,-0.275)\dpicstop
+\draw (4.777674,-0.275) node[right=-2bp]{source(,"mA")};
+\dpicdraw (4,-0.585)
+ --(4.225,-0.585)\dpicstop
+\dpicdraw (4.225,-0.585)
+ --(4.375,-0.435)
+ --(4.525,-0.585)
+ --(4.375,-0.735)
+ --(4.225,-0.585)\dpicstop
+\dpicdraw (4.525,-0.585)
+ --(4.75,-0.585)\dpicstop
+\draw (4.777674,-0.585) node[right=-2bp]{consource};
+\dpicdraw (4,-0.905)
+ --(4.225,-0.905)\dpicstop
+\dpicdraw (4.225,-0.905)
+ --(4.375,-0.755)
+ --(4.525,-0.905)
+ --(4.375,-1.055)
+ --(4.225,-0.905)\dpicstop
+\filldraw[line width=0bp](4.3875,-0.93)
+ --(4.4875,-0.905)
+ --(4.3875,-0.88) --cycle\dpicstop
+\dpicdraw (4.2625,-0.905)
+ --(4.464594,-0.905)\dpicstop
+\dpicdraw (4.525,-0.905)
+ --(4.75,-0.905)\dpicstop
+\draw (4.777674,-0.905) node[right=-2bp]{consource(,I)};
+\dpicdraw (4,-1.225)
+ --(4.225,-1.225)\dpicstop
+\dpicdraw (4.225,-1.225)
+ --(4.375,-1.075)
+ --(4.525,-1.225)
+ --(4.375,-1.375)
+ --(4.225,-1.225)\dpicstop
+\dpicdraw (4.375,-1.075)
+ --(4.375,-1.375)\dpicstop
+\dpicdraw (4.525,-1.225)
+ --(4.75,-1.225)\dpicstop
+\draw (4.777674,-1.225) node[right=-2bp]{consource(,i)};
+\dpicdraw (4,-1.545)
+ --(4.25,-1.545)\dpicstop
+\dpicdraw (4.375,-1.545) circle (0.049213in)\dpicstop
+\dpicdraw (4.26275,-1.49)
+ ..controls (4.332238,-1.53) and (4.417762,-1.53)
+ ..(4.48725,-1.49)\dpicstop
+\dpicdraw (4.5,-1.545)
+ --(4.75,-1.545)\dpicstop
+\draw (4.777674,-1.545) node[right=-2bp]{source(,SE)};
+\dpicdraw (4,-1.82)
+ --(4.225,-1.82)\dpicstop
+\dpicdraw (4.225,-1.82)
+ --(4.375,-1.67)
+ --(4.525,-1.82)
+ --(4.375,-1.97)
+ --(4.225,-1.82)\dpicstop
+\draw (4.3,-1.82) node{$-$};
+\draw (4.45,-1.82) node{$+$};
+\dpicdraw (4.525,-1.82)
+ --(4.75,-1.82)\dpicstop
+\draw (4.777674,-1.82) node[right=-2bp]{consource(,V)};
+\dpicdraw (4,-2.14)
+ --(4.225,-2.14)\dpicstop
+\dpicdraw (4.225,-2.14)
+ --(4.375,-1.99)
+ --(4.525,-2.14)
+ --(4.375,-2.29)
+ --(4.225,-2.14)\dpicstop
+\dpicdraw (4.225,-2.14)
+ --(4.525,-2.14)\dpicstop
+\dpicdraw (4.525,-2.14)
+ --(4.75,-2.14)\dpicstop
+\draw (4.777674,-2.14) node[right=-2bp]{consource(,v)};
+\dpicdraw (4,-2.44)
+ --(4.354167,-2.44)\dpicstop
+\dpicdraw (4.354167,-2.3775)
+ --(4.354167,-2.5025)\dpicstop
+\dpicdraw (4.395833,-2.315)
+ --(4.395833,-2.565)\dpicstop
+\dpicdraw (4.395833,-2.44)
+ --(4.75,-2.44)\dpicstop
+\draw (4.777674,-2.44) node[right=-2bp]{battery};
+\dpicdraw (4.75,-2.715)
+ --(4.479167,-2.715)\dpicstop
+\dpicdraw (4.479167,-2.7775)
+ --(4.479167,-2.6525)\dpicstop
+\dpicdraw (4.4375,-2.84)
+ --(4.4375,-2.59)\dpicstop
+\dpicdraw (4.395833,-2.7775)
+ --(4.395833,-2.6525)\dpicstop
+\dpicdraw (4.354167,-2.84)
+ --(4.354167,-2.59)\dpicstop
+\dpicdraw (4.3125,-2.7775)
+ --(4.3125,-2.6525)\dpicstop
+\dpicdraw (4.270833,-2.84)
+ --(4.270833,-2.59)\dpicstop
+\dpicdraw (4.270833,-2.715)
+ --(4,-2.715)\dpicstop
+\draw (4.777674,-2.715) node[right=-2bp]{battery(,3,R)};
+ }
+\end{tikzpicture}
+\vspace*{-0.5\baselineskip}
diff --git a/graphics/circuit_macros/doc/Sources.m4 b/graphics/circuit_macros/doc/SourcesMan.m4
index a70cea1113..8a4bab9bc6 100644
--- a/graphics/circuit_macros/doc/Sources.m4
+++ b/graphics/circuit_macros/doc/SourcesMan.m4
@@ -21,7 +21,8 @@ define(`NL',`; move down $1; right_')
{source(,X) ; move ; "`source(,X)'" ljust} NL
{source(,F) ; move ; "`source(,F)'" ljust} NL
{source(,G) ; move ; "`source(,G)'" ljust} NL
- {source(,Q) ; move ; "`source(,Q)'" ljust}
+ {source(,Q) ; move ; "`source(,Q)'" ljust} NL(0.3)
+ {proximity ; move ; "`\shortstack[l]{proximity\\ = consource(,P)}'" ljust}
}
move right_ 2.0
{
@@ -34,8 +35,8 @@ define(`NL',`; move down $1; right_')
{source(,SCr) ; move ; "`source(,SCr)'" ljust} NL
{source(,T) ; move ; "`source(,T)'" ljust} NL
{source(,L) ; move ; "`source(,L)'" ljust} NL
- {source(,B) ; move ; "`source(,B)'" ljust} NL(moveht*0.8)
- {nullator ; move ; "`nullator'" ljust} NL(moveht*0.6)
+ {source(,B) ; move ; "`source(,B)'" ljust} NL
+ {nullator ; move ; "`nullator'" ljust} NL(moveht*0.8)
{norator ; move ; "`norator'" ljust}
}
move right_ 2.0
@@ -49,7 +50,7 @@ define(`NL',`; move down $1; right_')
{source(,SE) ; move ; "`source(,SE)'" ljust} NL
{consource(,V) ; move ; "`consource(,V)'" ljust} NL(0.32)
{consource(,v) ; move ; "`consource(,v)'" ljust} NL(0.3)
- {battery ; move ; "`battery'" ljust} NL
+ {battery ; move ; "`battery'" ljust} NL(0.3)
{battery(,3,R) ; move ; "`battery(,3,R)'" ljust}
iflatex(`ifpsfrag(,`latexcommand(})')')
diff --git a/graphics/circuit_macros/doc/Switches.m4 b/graphics/circuit_macros/doc/Switches.m4
deleted file mode 100644
index d8262be92d..0000000000
--- a/graphics/circuit_macros/doc/Switches.m4
+++ /dev/null
@@ -1,117 +0,0 @@
-.PS
-# Switches.m4
-cct_init
-
-movewid = 0.25
-# Row 1
- right_; {
- lswitch; {S:"\tt ls{}witch" at last [].s+(0,-10bp__)}
- move right_
- lswitch(,,O); {"\tt (,,O)" at (last [],S)}
- move right_
- lswitch(,,C); {"\tt (,,C)" at (last [],S)}
- move right_
- lswitch(,,DA); {"\tt (,,DA)" at (last [],S)}
- move right_
- lswitch(,,dDO); {"\tt (,,dDO)" at (last [],S)}
- move right_
- lswitch(,,uDC); {"\tt (,,uDC)" at (last [],S)}
- }
-# Row 2
- move down; right_; {
- lswitch(,,K); {S:"\tt (,,K)" at last [].s+(0,-10bp__)}
- move right_
- lswitch(,,KD); {"\tt (,,KD)" at (last [],S)}
- move right_
- lswitch(,,KOD); {"\tt (,,KOD)" at (last [],S)}
- move right_
- lswitch(,,KCD); {"\tt (,,KCD)" at (last [],S)}
- move right_
- bswitch; {"\tt `bswitch'" at (last [],S)}
- move right_
- bswitch(,,C); {"\tt (,,C)" at (last [],S)}
- }
-# Row 3
- move down; right_; {
- D: dswitch(,,); {S: "\tt ds{}witch(,{},)" at last [].s+(0,-10bp__)}
- thinlines_
- { spline <- from 0.25 along_(D) up 0.1 then up 0.05 left 0.1
- {"\tt W" rjust}
- spline <- from D.c+(0,m4sc*2) up 0.1 then up 0.05 left 0.1
- {"\tt B" rjust }}
- thicklines_
- move right_
- D: dswitch(,,WdBK); {"\tt (,,WdBK)" at (last [],S)+(0,-4bp__)}
- thinlines_
- { spline <- from tr_xy(0,-2) up 0.1 then up 0.10 left 0.1
- {"\tt dB" rjust}
- spline <- from tr_xy(4,-2) right 0.1 then right 0.05 up 0.15
- {"\tt K" above }}
- thicklines_
- move right_
- dswitch(,,WBmdDK); {"\tt (,,WBmdDK)" at (last [],S)}
- move right_
- dswitch(,,WBKTr); {"\tt (,,WBKTr)" at (last [],S)}
- move right_
- dswitch(,,WdBL); {"\tt (,,WdBL)" at (last [],S+(0,-4bp__))}
- move right_
- dswitch(,,WBCo); {"\tt (,,WBCo)" at (last [],S)}
- }
-# Row 4
- move down; right_; {
- dswitch(,,WBKCo); {S: "\tt (,,WBKCo)" at last [].s+(0,-10bp__)}
- move right_
- dswitch(,,WBCb); {"\tt (,,WBCb)" at (last [],S)}
- move right_
- dswitch(,,WBDI); {"\tt (,,WBDI)" at (last [],S)}
- move right_
- dswitch(,,WBSd); {"\tt (,,WBSd)" at (last [],S)}
- move right_
- dswitch(,,WBFDI); {"\tt (,,WBFDI)" at (last [],S)}
- move right_
- dswitch(,,WBFSd); {"\tt (,,WBFSd)" at (last [],S)}
- }
-# Row 5
- move down moveht*5/4; right_; {
- dswitch(,,WBTh); {S: "\tt (,,WBTh)" at last [].s+(0,-10bp__)}
- move right_
- dswitch(,,WBKC); {"\tt (,,WBKC)" at (last [],S)}
- move right_
- dswitch(,,WBM); {"\tt (,,WBM)" at (last [],S)}
- move right_
- dswitch(,,WBCO); {"\tt (,,WBCO)" at (last [],S)}
- move right_
- dswitch(,,WBMP); {"\tt (,,WBMP)" at (last [],S)}
- move right_
- dswitch(,,WBoKCP); {"\tt (,,WBoKCP)" at (last [],S)}
- }
-# Row 6
- move down moveht*5/4; right_; {
- dswitch(,,WBCY); {S: "\tt (,,WBCY)" at last [].s+(0,-10bp__)}
- move right_
- dswitch(,,WBCZ); {"\tt (,,WBCZ)" at (last [],S)}
- move right_
- dswitch(,,WBCE); {"\tt (,,WBCE)" at (last [],S)}
- move right_
- dswitch(,,WBRH); {"\tt (,,WBRH)" at (last [],S)}
- move right_
- dswitch(,,WBRdH); {"\tt (,,WBRdH)" at (last [],S)}
- move right_
- dswitch(,,WBRHH); {"\tt (,,WBRHH)" at (last [],S)}
- }
-# Row 7
- move down; right_; {
- dswitch(,,WBMMR); {S: "\tt (,,WBMMR)" at last [].s+(0,-10bp__)}
- move right_
- dswitch(,,WBMM); {"\tt (,,WBMM)" at (last [],S)}
- move right_
- dswitch(,,WBMR); {"\tt (,,WBMR)" at (last [],S)}
- move right_
- dswitch(,,WBEL); {"\tt (,,WBEL)" at (last [],S)}
- move right_
- dswitch(,,WBLE); {"\tt (,,WBLE)" at (last [],S)}
- move right_
- dswitch(,,WBoKEL); {"\tt (,,WBoKEL)" at (last [],S)}
- }
-
-.PE
diff --git a/graphics/circuit_macros/doc/Switches.tex b/graphics/circuit_macros/doc/Switches.tex
new file mode 100644
index 0000000000..3f6e0b08e1
--- /dev/null
+++ b/graphics/circuit_macros/doc/Switches.tex
@@ -0,0 +1,596 @@
+\begin{tikzpicture}[scale=2.54]
+% dpic version 2020.03.01 option -g for TikZ and PGF 1.01
+\ifx\dpiclw\undefined\newdimen\dpiclw\fi
+\global\def\dpicdraw{\draw[line width=\dpiclw]}
+\global\def\dpicstop{;}
+\dpiclw=0.8bp
+\dpiclw=0.8bp
+\dpicdraw (0,0)
+ --(0.291667,0)\dpicstop
+\dpicdraw (0.291667,0)
+ --(0.416667,0.125)\dpicstop
+\dpicdraw (0.458333,0)
+ --(0.75,0)\dpicstop
+\draw (0.375,-0.160595) node{\tt ls{}witch};
+\dpicdraw (1,0)
+ --(1.291667,0)\dpicstop
+\dpicdraw (1.291667,0)
+ --(1.416667,0.125)\dpicstop
+\filldraw[line width=0bp](1.362125,0.086087)
+ --(1.349366,0.074969)
+ ..controls (1.342662,0.09113) and (1.33416,0.106484)
+ ..(1.324019,0.120741)
+ ..controls (1.34186,0.114971) and (1.358938,0.107068)
+ ..(1.374885,0.097205)
+ --(1.362125,0.086087)\dpicstop
+\dpicdraw (1.414768,-0.021706)
+ ..controls (1.405742,0.02367) and (1.383411,0.065332)
+ ..(1.350622,0.097972)\dpicstop
+\dpicdraw (1.458333,0)
+ --(1.75,0)\dpicstop
+\draw (1.375,-0.160595) node{\tt (,,O)};
+\dpicdraw (2,0)
+ --(2.291667,0)\dpicstop
+\dpicdraw (2.291667,0)
+ --(2.416667,0.125)\dpicstop
+\filldraw[line width=0bp](2.403732,0.018447)
+ --(2.387471,0.01371)
+ ..controls (2.397462,-0.000674) and (2.405825,-0.016123)
+ ..(2.412407,-0.032352)
+ ..controls (2.417126,-0.014206) and (2.419673,0.004436)
+ ..(2.419994,0.023183)
+ --(2.403732,0.018447)\dpicstop
+\dpicdraw (2.407539,0.002327)
+ ..controls (2.399025,0.041593) and (2.380658,0.078046)
+ ..(2.354167,0.108253)\dpicstop
+\dpicdraw (2.458333,0)
+ --(2.75,0)\dpicstop
+\draw (2.375,-0.160595) node{\tt (,,C)};
+\dpicdraw (3,0)
+ --(3.291667,0)\dpicstop
+\filldraw[line width=0bp](3.391447,0.074795)
+ --(3.416667,0.125)
+ --(3.366462,0.09978) --cycle\dpicstop
+\dpicdraw (3.291667,0)
+ --(3.404174,0.112507)\dpicstop
+\dpicdraw (3.458333,0)
+ --(3.75,0)\dpicstop
+\dpicdraw[fill=white](3.291667,0) circle (0.007874in)\dpicstop
+\dpicdraw[fill=white](3.458333,0) circle (0.007874in)\dpicstop
+\draw (3.375,-0.160595) node{\tt (,,DA)};
+\dpicdraw (4,0)
+ --(4.291667,0)\dpicstop
+\dpicdraw (4.291667,0)
+ --(4.416667,0.125)\dpicstop
+\filldraw[line width=0bp](4.362125,0.086087)
+ --(4.349366,0.074969)
+ ..controls (4.342662,0.09113) and (4.33416,0.106484)
+ ..(4.324019,0.120741)
+ ..controls (4.34186,0.114971) and (4.358938,0.107068)
+ ..(4.374885,0.097205)
+ --(4.362125,0.086087)\dpicstop
+\dpicdraw (4.414768,-0.021706)
+ ..controls (4.405742,0.02367) and (4.383411,0.065332)
+ ..(4.350622,0.097972)\dpicstop
+\dpicdraw (4.458333,0)
+ --(4.75,0)\dpicstop
+\dpicdraw[fill=white](4.291667,0) circle (0.007874in)\dpicstop
+\draw (4.375,-0.160595) node{\tt (,,dDO)};
+\dpicdraw (5,0)
+ --(5.291667,0)\dpicstop
+\dpicdraw (5.291667,0)
+ --(5.416667,0.125)\dpicstop
+\filldraw[line width=0bp](5.403732,0.018447)
+ --(5.387471,0.01371)
+ ..controls (5.397462,-0.000674) and (5.405825,-0.016123)
+ ..(5.412407,-0.032352)
+ ..controls (5.417126,-0.014206) and (5.419673,0.004436)
+ ..(5.419994,0.023183)
+ --(5.403732,0.018447)\dpicstop
+\dpicdraw (5.407539,0.002327)
+ ..controls (5.399025,0.041593) and (5.380658,0.078046)
+ ..(5.354167,0.108253)\dpicstop
+\dpicdraw (5.458333,0)
+ --(5.75,0)\dpicstop
+\dpicdraw[fill=white](5.458333,0) circle (0.007874in)\dpicstop
+\draw (5.375,-0.160595) node{\tt (,,uDC)};
+\dpicdraw (0,-0.5)
+ --(0.291667,-0.5)\dpicstop
+\dpicdraw (0.291667,-0.5)
+ --(0.475789,-0.477745)\dpicstop
+\dpicdraw (0.458333,-0.5)
+ --(0.458333,-0.48)\dpicstop
+\dpicdraw (0.458333,-0.5)
+ --(0.75,-0.5)\dpicstop
+\draw (0.375,-0.660595) node{\tt (,,K)};
+\dpicdraw (1,-0.5)
+ --(1.291667,-0.5)\dpicstop
+\dpicdraw (1.291667,-0.5)
+ --(1.475789,-0.477745)\dpicstop
+\dpicdraw (1.458333,-0.5)
+ --(1.458333,-0.48)\dpicstop
+\dpicdraw (1.458333,-0.5)
+ --(1.75,-0.5)\dpicstop
+\dpicdraw[fill=white](1.291667,-0.5) circle (0.007874in)\dpicstop
+\dpicdraw[fill=white](1.458333,-0.5) circle (0.007874in)\dpicstop
+\draw (1.375,-0.660595) node{\tt (,,KD)};
+\dpicdraw (2,-0.5)
+ --(2.291667,-0.5)\dpicstop
+\dpicdraw (2.291667,-0.5)
+ --(2.475789,-0.477745)\dpicstop
+\dpicdraw (2.458333,-0.5)
+ --(2.458333,-0.48)\dpicstop
+\filldraw[line width=0bp](2.362125,-0.413913)
+ --(2.349366,-0.425031)
+ ..controls (2.342662,-0.40887) and (2.33416,-0.393516)
+ ..(2.324019,-0.379259)
+ ..controls (2.34186,-0.385029) and (2.358938,-0.392932)
+ ..(2.374885,-0.402795)
+ --(2.362125,-0.413913)\dpicstop
+\dpicdraw (2.414768,-0.521706)
+ ..controls (2.405742,-0.47633) and (2.383411,-0.434668)
+ ..(2.350622,-0.402028)\dpicstop
+\dpicdraw (2.458333,-0.5)
+ --(2.75,-0.5)\dpicstop
+\dpicdraw[fill=white](2.291667,-0.5) circle (0.007874in)\dpicstop
+\dpicdraw[fill=white](2.458333,-0.5) circle (0.007874in)\dpicstop
+\draw (2.375,-0.660595) node{\tt (,,KOD)};
+\dpicdraw (3,-0.5)
+ --(3.291667,-0.5)\dpicstop
+\dpicdraw (3.291667,-0.5)
+ --(3.475789,-0.477745)\dpicstop
+\dpicdraw (3.458333,-0.5)
+ --(3.458333,-0.48)\dpicstop
+\filldraw[line width=0bp](3.402903,-0.501361)
+ --(3.386185,-0.503989)
+ ..controls (3.394255,-0.519512) and (3.400552,-0.535895)
+ ..(3.404955,-0.552827)
+ ..controls (3.412003,-0.535452) and (3.416927,-0.517289)
+ ..(3.419621,-0.498733)
+ --(3.402903,-0.501361)\dpicstop
+\dpicdraw (3.404613,-0.517813)
+ ..controls (3.400687,-0.471714) and (3.383125,-0.427828)
+ ..(3.354167,-0.391747)\dpicstop
+\dpicdraw (3.458333,-0.5)
+ --(3.75,-0.5)\dpicstop
+\dpicdraw[fill=white](3.291667,-0.5) circle (0.007874in)\dpicstop
+\dpicdraw[fill=white](3.458333,-0.5) circle (0.007874in)\dpicstop
+\draw (3.375,-0.660595) node{\tt (,,KCD)};
+\dpicdraw (4,-0.5)
+ --(4.257074,-0.5)\dpicstop
+\dpicdraw (4.291667,-0.5) circle (0.013619in)\dpicstop
+\dpicdraw (4.458333,-0.5) circle (0.013619in)\dpicstop
+\dpicdraw (4.257074,-0.413517)
+ --(4.492926,-0.413517)\dpicstop
+\dpicdraw (4.375,-0.413517)
+ --(4.375,-0.344332)\dpicstop
+\dpicdraw (4.492926,-0.5)
+ --(4.75,-0.5)\dpicstop
+\draw (4.375,-0.660595) node{\tt bswitch};
+\dpicdraw (5,-0.5)
+ --(5.257074,-0.5)\dpicstop
+\dpicdraw (5.291667,-0.5) circle (0.013619in)\dpicstop
+\dpicdraw (5.458333,-0.5) circle (0.013619in)\dpicstop
+\dpicdraw (5.257074,-0.534593)
+ --(5.492926,-0.534593)\dpicstop
+\dpicdraw (5.375,-0.534593)
+ --(5.375,-0.396221)\dpicstop
+\dpicdraw (5.492926,-0.5)
+ --(5.75,-0.5)\dpicstop
+\draw (5.375,-0.660595) node{\tt (,,C)};
+\dpicdraw (0,-1)
+ --(0.291667,-1)\dpicstop
+\dpicdraw (0.458333,-1)
+ --(0.75,-1)\dpicstop
+\dpicdraw (0.291667,-1)
+ --(0.479167,-0.90625)\dpicstop
+\draw (0.385417,-1.140032) node{\tt ds{}witch(,{},)};
+\dpiclw=0.4bp
+\filldraw[line width=0bp](0.1675,-0.933333)
+ --(0.1875,-1)
+ --(0.2075,-0.933333) --cycle\dpicstop
+\dpicdraw (0.1875,-0.980666)
+ --(0.1875,-0.940333)
+ ..controls (0.1875,-0.913444) and (0.170833,-0.891667)
+ ..(0.1375,-0.875)
+ --(0.0875,-0.85)\dpicstop
+\draw (0.0875,-0.85) node[left=-2bp]{\tt W};
+\filldraw[line width=0bp](0.355,-0.891667)
+ --(0.375,-0.958333)
+ --(0.395,-0.891667) --cycle\dpicstop
+\dpicdraw (0.375,-0.938999)
+ --(0.375,-0.898666)
+ ..controls (0.375,-0.871778) and (0.358333,-0.85)
+ ..(0.325,-0.833333)
+ --(0.275,-0.808333)\dpicstop
+\draw (0.275,-0.808333) node[left=-2bp]{\tt B};
+\dpiclw=0.8bp
+\dpicdraw (1,-1)
+ --(1.291667,-1)\dpicstop
+\dpicdraw (1.458333,-1)
+ --(1.75,-1)\dpicstop
+\dpicdraw (1.291667,-1)
+ --(1.479167,-1.09375)\dpicstop
+\dpicdraw (1.458333,-1)
+ --(1.458333,-1.104167)\dpicstop
+\draw (1.385417,-1.195588) node{\tt (,,WdBK)};
+\dpiclw=0.4bp
+\filldraw[line width=0bp](1.355,-0.975)
+ --(1.375,-1.041667)
+ --(1.395,-0.975) --cycle\dpicstop
+\dpicdraw (1.375,-1.022333)
+ --(1.375,-0.982)
+ ..controls (1.375,-0.955111) and (1.358333,-0.925)
+ ..(1.325,-0.891667)
+ --(1.275,-0.841667)\dpicstop
+\draw (1.275,-0.841667) node[left=-2bp]{\tt dB};
+\filldraw[line width=0bp](1.525,-1.021667)
+ --(1.458333,-1.041667)
+ --(1.525,-1.061667) --cycle\dpicstop
+\dpicdraw (1.477667,-1.041667)
+ --(1.518,-1.041667)
+ ..controls (1.544889,-1.041667) and (1.566667,-1.016667)
+ ..(1.583333,-0.966667)
+ --(1.608333,-0.891667)\dpicstop
+\draw (1.608333,-0.891667) node[above=-2bp]{\tt K};
+\dpiclw=0.8bp
+\dpicdraw (2,-1)
+ --(2.291667,-1)\dpicstop
+\dpicdraw (2.458333,-1)
+ --(2.75,-1)\dpicstop
+\dpicdraw (2.291667,-1)
+ --(2.479167,-0.90625)\dpicstop
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!0!black]
+\dpicdraw (2.502459,-0.894604) circle (0.010253in)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\dpicdraw[fill=white](2.291667,-1) circle (0.007874in)\dpicstop
+\dpicdraw (2.458333,-1)
+ --(2.458333,-0.895833)\dpicstop
+\draw (2.385417,-1.140032) node{\tt (,,WBmdDK)};
+\dpicdraw (3,-1)
+ --(3.291667,-1)\dpicstop
+\dpicdraw (3.458333,-1)
+ --(3.75,-1)\dpicstop
+\dpicdraw (3.291667,-1)
+ --(3.479167,-0.90625)\dpicstop
+\dpicdraw (3.458333,-1)
+ --(3.458333,-0.895833)\dpicstop
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!0!black]
+\dpicdraw (3.401823,-0.915625)
+ --(3.390104,-0.892188)
+ --(3.343229,-0.915625)
+ --(3.366667,-0.9625)
+ --(3.413542,-0.939063)
+ --(3.401823,-0.915625)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\draw (3.385417,-1.140032) node{\tt (,,WBKTr)};
+\dpicdraw (4,-1)
+ --(4.291667,-1)\dpicstop
+\dpicdraw (4.458333,-1)
+ --(4.75,-1)\dpicstop
+\dpicdraw (4.291667,-1)
+ --(4.479167,-1.09375)\dpicstop
+\dpicdraw (4.35026,-1.029297)
+ --(4.39974,-1.10612)
+ --(4.420573,-1.064453)\dpicstop
+\draw (4.385417,-1.195588) node{\tt (,,WdBL)};
+\dpicdraw (5,-1)
+ --(5.291667,-1)\dpicstop
+\dpicdraw (5.458333,-1)
+ --(5.75,-1)\dpicstop
+\dpicdraw (5.291667,-1)
+ --(5.479167,-0.90625)\dpicstop
+\dpicdraw (5.458333,-1)
+ ..controls (5.458333,-0.944444) and (5.541667,-0.944444)
+ ..(5.541667,-1)\dpicstop
+\draw (5.385417,-1.140032) node{\tt (,,WBCo)};
+\dpicdraw (0,-1.5)
+ --(0.291667,-1.5)\dpicstop
+\dpicdraw (0.458333,-1.5)
+ --(0.75,-1.5)\dpicstop
+\dpicdraw (0.291667,-1.5)
+ --(0.479167,-1.40625)\dpicstop
+\dpicdraw (0.458333,-1.5)
+ ..controls (0.458333,-1.476988) and (0.476988,-1.458333)
+ ..(0.5,-1.458333)
+ ..controls (0.523012,-1.458333) and (0.541667,-1.476988)
+ ..(0.541667,-1.5)\dpicstop
+\dpicdraw (0.458333,-1.5)
+ --(0.458333,-1.395833)\dpicstop
+\draw (0.385417,-1.640032) node{\tt (,,WBKCo)};
+\dpicdraw (1,-1.5)
+ --(1.291667,-1.5)\dpicstop
+\dpicdraw (1.458333,-1.5)
+ --(1.75,-1.5)\dpicstop
+\dpicdraw (1.291667,-1.5)
+ --(1.479167,-1.40625)\dpicstop
+\dpicdraw (1.416667,-1.541667)
+ --(1.5,-1.458333)\dpicstop
+\dpicdraw (1.416667,-1.458333)
+ --(1.5,-1.541667)\dpicstop
+\draw (1.375,-1.640032) node{\tt (,,WBCb)};
+\dpicdraw (2,-1.5)
+ --(2.291667,-1.5)\dpicstop
+\dpicdraw (2.458333,-1.5)
+ --(2.75,-1.5)\dpicstop
+\dpicdraw (2.291667,-1.5)
+ --(2.479167,-1.40625)\dpicstop
+\dpicdraw (2.458333,-1.458333)
+ --(2.458333,-1.541667)\dpicstop
+\draw (2.375,-1.640032) node{\tt (,,WBDI)};
+\dpicdraw (3,-1.5)
+ --(3.291667,-1.5)\dpicstop
+\dpicdraw (3.458333,-1.5)
+ --(3.75,-1.5)\dpicstop
+\dpicdraw (3.291667,-1.5)
+ --(3.479167,-1.40625)\dpicstop
+\dpicdraw[fill=white](3.458333,-1.5) circle (0.012303in)\dpicstop
+\dpicdraw (3.489583,-1.458333)
+ --(3.489583,-1.541667)\dpicstop
+\draw (3.375,-1.640032) node{\tt (,,WBSd)};
+\dpicdraw (4,-1.5)
+ --(4.291667,-1.5)\dpicstop
+\dpicdraw (4.458333,-1.5)
+ --(4.75,-1.5)\dpicstop
+\dpicdraw (4.291667,-1.5)
+ --(4.479167,-1.40625)\dpicstop
+\dpicdraw (4.458333,-1.458333)
+ --(4.458333,-1.541667)\dpicstop
+\dpicdraw (4.315104,-1.488281)
+ --(4.304688,-1.467448)
+ --(4.398438,-1.420573)
+ --(4.419271,-1.46224)
+ --(4.325521,-1.509115)
+ --(4.315104,-1.488281)\dpicstop
+\draw (4.375,-1.640032) node{\tt (,,WBFDI)};
+\dpicdraw (5,-1.5)
+ --(5.291667,-1.5)\dpicstop
+\dpicdraw (5.458333,-1.5)
+ --(5.75,-1.5)\dpicstop
+\dpicdraw (5.291667,-1.5)
+ --(5.479167,-1.40625)\dpicstop
+\dpicdraw (5.315104,-1.488281)
+ --(5.304688,-1.467448)
+ --(5.398438,-1.420573)
+ --(5.419271,-1.46224)
+ --(5.325521,-1.509115)
+ --(5.315104,-1.488281)\dpicstop
+\dpicdraw[fill=white](5.458333,-1.5) circle (0.012303in)\dpicstop
+\dpicdraw (5.489583,-1.458333)
+ --(5.489583,-1.541667)\dpicstop
+\draw (5.375,-1.640032) node{\tt (,,WBFSd)};
+\dpicdraw (0,-2.125)
+ --(0.291667,-2.125)\dpicstop
+\dpicdraw (0.458333,-2.125)
+ --(0.75,-2.125)\dpicstop
+\dpicdraw (0.291667,-2.125)
+ --(0.479167,-2.03125)\dpicstop
+\dpicdraw (0.385417,-2.078125)
+ --(0.385417,-1.984375)
+ --(0.447917,-1.984375)
+ --(0.447917,-1.921875)
+ --(0.385417,-1.921875)
+ --(0.385417,-1.828125)\dpicstop
+\draw (0.380208,-2.26398) node{\tt (,,WBTh)};
+\dpicdraw (1,-2.125)
+ --(1.291667,-2.125)\dpicstop
+\dpicdraw (1.458333,-2.125)
+ --(1.75,-2.125)\dpicstop
+\dpicdraw (1.291667,-2.125)
+ --(1.479167,-2.03125)\dpicstop
+\dpicdraw (1.458333,-2.125)
+ --(1.458333,-2.020833)\dpicstop
+\dpicdraw[dash pattern=on 0.05in off 0.05in](1.385417,-2.078125)
+ --(1.385417,-1.828125)\dpicstop
+\draw (1.380208,-2.26398) node{\tt (,,WBKC)};
+\dpicdraw (2,-2.125)
+ --(2.291667,-2.125)\dpicstop
+\dpicdraw (2.458333,-2.125)
+ --(2.75,-2.125)\dpicstop
+\dpicdraw (2.291667,-2.125)
+ --(2.479167,-2.03125)\dpicstop
+\dpicdraw[dash pattern=on 0.03125in off 0.03125in](2.385417,-2.078125)
+ --(2.385417,-1.984375)\dpicstop
+\dpicdraw (2.385417,-1.984375)
+ --(2.322917,-1.953125)
+ --(2.385417,-1.921875)\dpicstop
+\dpicdraw[dash pattern=on 0.03125in off 0.03125in](2.385417,-1.921875)
+ --(2.385417,-1.828125)\dpicstop
+\draw (2.380208,-2.26398) node{\tt (,,WBM)};
+\dpicdraw (3,-2.125)
+ --(3.291667,-2.125)\dpicstop
+\dpicdraw (3.458333,-2.125)
+ --(3.75,-2.125)\dpicstop
+\dpicdraw (3.291667,-2.125)
+ --(3.479167,-2.03125)\dpicstop
+\dpicdraw[dash pattern=on 0.05in off 0.05in](3.385417,-2.078125)
+ --(3.385417,-1.828125)\dpicstop
+\dpicdraw (3.333333,-1.828125)
+ --(3.4375,-1.828125)\dpicstop
+\draw (3.380208,-2.26398) node{\tt (,,WBCO)};
+\dpicdraw (4,-2.125)
+ --(4.291667,-2.125)\dpicstop
+\dpicdraw (4.458333,-2.125)
+ --(4.75,-2.125)\dpicstop
+\dpicdraw (4.291667,-2.125)
+ --(4.479167,-2.03125)\dpicstop
+\dpicdraw[dash pattern=on 0.03125in off 0.03125in](4.385417,-2.078125)
+ --(4.385417,-1.984375)\dpicstop
+\dpicdraw (4.385417,-1.984375)
+ --(4.322917,-1.953125)
+ --(4.385417,-1.921875)\dpicstop
+\dpicdraw[dash pattern=on 0.03125in off 0.03125in](4.385417,-1.921875)
+ --(4.385417,-1.828125)\dpicstop
+\dpicdraw (4.333333,-1.880208)
+ --(4.333333,-1.828125)
+ --(4.4375,-1.828125)
+ --(4.4375,-1.880208)\dpicstop
+\draw (4.380208,-2.26398) node{\tt (,,WBMP)};
+\dpicdraw (5,-2.125)
+ --(5.291667,-2.125)\dpicstop
+\dpicdraw (5.458333,-2.125)
+ --(5.75,-2.125)\dpicstop
+\dpicdraw (5.291667,-2.125)
+ --(5.458333,-1.968634)\dpicstop
+\dpicdraw (5.458333,-2.125)
+ --(5.458333,-2.020833)\dpicstop
+\dpicdraw[dash pattern=on 0.05in off 0.05in](5.375,-2.046817)
+ --(5.375,-1.796817)\dpicstop
+\dpicdraw (5.322917,-1.8489)
+ --(5.322917,-1.796817)
+ --(5.427083,-1.796817)
+ --(5.427083,-1.8489)\dpicstop
+\draw (5.375,-2.26398) node{\tt (,,WBoKCP)};
+\dpicdraw (0,-2.75)
+ --(0.291667,-2.75)\dpicstop
+\dpicdraw (0.458333,-2.75)
+ --(0.75,-2.75)\dpicstop
+\dpicdraw (0.291667,-2.75)
+ --(0.479167,-2.65625)\dpicstop
+\dpicdraw[dash pattern=on 0.05in off 0.05in](0.385417,-2.703125)
+ --(0.385417,-2.453125)\dpicstop
+\dpicdraw (0.333333,-2.401042)
+ --(0.333333,-2.453125)
+ --(0.4375,-2.453125)
+ --(0.4375,-2.401042)\dpicstop
+\draw (0.380208,-2.88898) node{\tt (,,WBCY)};
+\dpicdraw (1,-2.75)
+ --(1.291667,-2.75)\dpicstop
+\dpicdraw (1.458333,-2.75)
+ --(1.75,-2.75)\dpicstop
+\dpicdraw (1.291667,-2.75)
+ --(1.479167,-2.65625)\dpicstop
+\dpicdraw[dash pattern=on 0.05in off 0.05in](1.385417,-2.703125)
+ --(1.385417,-2.453125)\dpicstop
+\dpicdraw (1.333333,-2.505208)
+ --(1.333333,-2.453125)
+ --(1.4375,-2.453125)
+ --(1.4375,-2.401042)\dpicstop
+\draw (1.380208,-2.88898) node{\tt (,,WBCZ)};
+\dpicdraw (2,-2.75)
+ --(2.291667,-2.75)\dpicstop
+\dpicdraw (2.458333,-2.75)
+ --(2.75,-2.75)\dpicstop
+\dpicdraw (2.291667,-2.75)
+ --(2.479167,-2.65625)\dpicstop
+\dpicdraw[dash pattern=on 0.05in off 0.05in](2.385417,-2.703125)
+ --(2.385417,-2.453125)\dpicstop
+\dpicdraw (2.333333,-2.453125)
+ --(2.4375,-2.453125)\dpicstop
+\dpicdraw (2.4375,-2.453125)
+ ..controls (2.413909,-2.413806) and (2.356925,-2.413806)
+ ..(2.333333,-2.453125)\dpicstop
+\draw (2.380208,-2.88898) node{\tt (,,WBCE)};
+\dpicdraw (3,-2.75)
+ --(3.291667,-2.75)\dpicstop
+\dpicdraw (3.458333,-2.75)
+ --(3.75,-2.75)\dpicstop
+\dpicdraw (3.291667,-2.75)
+ --(3.479167,-2.65625)\dpicstop
+\dpicdraw (3.369792,-2.710938)
+ --(3.369792,-2.460938)\dpicstop
+\dpicdraw (3.401042,-2.695313)
+ --(3.401042,-2.463355)\dpicstop
+\dpicdraw (3.447917,-2.430896)
+ ..controls (3.415391,-2.469927) and (3.355443,-2.469927)
+ ..(3.322917,-2.430896)\dpicstop
+\draw (3.380208,-2.88898) node{\tt (,,WBRH)};
+\dpicdraw (4,-2.75)
+ --(4.291667,-2.75)\dpicstop
+\dpicdraw (4.458333,-2.75)
+ --(4.75,-2.75)\dpicstop
+\dpicdraw (4.291667,-2.75)
+ --(4.479167,-2.65625)\dpicstop
+\dpicdraw (4.369792,-2.710938)
+ --(4.369792,-2.460938)\dpicstop
+\dpicdraw (4.401042,-2.695313)
+ --(4.401042,-2.463355)\dpicstop
+\dpicdraw (4.447917,-2.493396)
+ ..controls (4.415391,-2.454365) and (4.355443,-2.454365)
+ ..(4.322917,-2.493396)\dpicstop
+\draw (4.380208,-2.88898) node{\tt (,,WBRdH)};
+\dpicdraw (5,-2.75)
+ --(5.291667,-2.75)\dpicstop
+\dpicdraw (5.458333,-2.75)
+ --(5.75,-2.75)\dpicstop
+\dpicdraw (5.291667,-2.75)
+ --(5.479167,-2.65625)\dpicstop
+\dpicdraw (5.369792,-2.710938)
+ --(5.369792,-2.460938)\dpicstop
+\dpicdraw (5.401042,-2.695313)
+ --(5.401042,-2.463355)\dpicstop
+\dpicdraw (5.447917,-2.430896)
+ ..controls (5.415391,-2.469927) and (5.355443,-2.469927)
+ ..(5.322917,-2.430896)\dpicstop
+\dpicdraw (5.447917,-2.493396)
+ ..controls (5.415391,-2.454365) and (5.355443,-2.454365)
+ ..(5.322917,-2.493396)\dpicstop
+\draw (5.380208,-2.88898) node{\tt (,,WBRHH)};
+\dpicdraw (0,-3.25)
+ --(0.291667,-3.25)\dpicstop
+\dpicdraw (0.458333,-3.25)
+ --(0.75,-3.25)\dpicstop
+\dpicdraw (0.291667,-3.25)
+ --(0.479167,-3.15625)\dpicstop
+\dpicdraw (0.5,-3.225833)
+ --(0.458333,-3.25)
+ --(0.5,-3.274167)\dpicstop
+\draw (0.385417,-3.390032) node(S){\tt (,,WBMMR)};
+\dpicdraw (1,-3.25)
+ --(1.291667,-3.25)\dpicstop
+\dpicdraw (1.458333,-3.25)
+ --(1.75,-3.25)\dpicstop
+\dpicdraw (1.291667,-3.25)
+ --(1.479167,-3.15625)\dpicstop
+\dpicdraw (1.479167,-3.25)
+ --(1.458333,-3.25)
+ --(1.5,-3.225833)\dpicstop
+\draw (1.385417,-3.390032) node{\tt (,,WBMM)};
+\dpicdraw (2,-3.25)
+ --(2.291667,-3.25)\dpicstop
+\dpicdraw (2.458333,-3.25)
+ --(2.75,-3.25)\dpicstop
+\dpicdraw (2.291667,-3.25)
+ --(2.479167,-3.15625)\dpicstop
+\dpicdraw (2.479167,-3.25)
+ --(2.458333,-3.25)
+ --(2.5,-3.274167)\dpicstop
+\draw (2.385417,-3.390032) node{\tt (,,WBMR)};
+\dpicdraw (3,-3.25)
+ --(3.291667,-3.25)\dpicstop
+\dpicdraw (3.458333,-3.25)
+ --(3.75,-3.25)\dpicstop
+\dpicdraw (3.291667,-3.25)
+ --(3.479167,-3.15625)\dpicstop
+\dpicdraw (3.477292,-3.157188)
+ --(3.479167,-3.15625)
+ --(3.502459,-3.202835)\dpicstop
+\draw (3.385417,-3.390032) node{\tt (,,WBEL)};
+\dpicdraw (4,-3.25)
+ --(4.291667,-3.25)\dpicstop
+\dpicdraw (4.458333,-3.25)
+ --(4.75,-3.25)\dpicstop
+\dpicdraw (4.291667,-3.25)
+ --(4.479167,-3.15625)\dpicstop
+\dpicdraw (4.477292,-3.157188)
+ --(4.479167,-3.15625)
+ --(4.455874,-3.109665)\dpicstop
+\draw (4.385417,-3.390032) node{\tt (,,WBLE)};
+\dpicdraw (5,-3.25)
+ --(5.291667,-3.25)\dpicstop
+\dpicdraw (5.458333,-3.25)
+ --(5.75,-3.25)\dpicstop
+\dpicdraw (5.291667,-3.25)
+ --(5.458333,-3.093634)\dpicstop
+\dpicdraw (5.456667,-3.095198)
+ --(5.458333,-3.093634)
+ --(5.493969,-3.131618)\dpicstop
+\dpicdraw (5.458333,-3.25)
+ --(5.458333,-3.145833)\dpicstop
+\draw (5.375,-3.390032) node{\tt (,,WBoKEL)};
+\end{tikzpicture}
+\vspace*{-0.5\baselineskip}
diff --git a/graphics/circuit_macros/doc/SwitchesMan.m4 b/graphics/circuit_macros/doc/SwitchesMan.m4
new file mode 100644
index 0000000000..46b3f9240d
--- /dev/null
+++ b/graphics/circuit_macros/doc/SwitchesMan.m4
@@ -0,0 +1,131 @@
+.PS
+# Switches.m4
+cct_init
+
+define(`Below',`at last [].s+(0,-10bp__)')
+
+movewid = 0.25
+# Row 1
+ right_; {
+ lswitch; {S:"\tt ls{}witch" Below}
+ move right_
+ lswitch(,,O); {"\tt (,{,}O)" at (last [],S)}
+ move right_
+ lswitch(,,C); {"\tt (,{,}C)" at (last [],S)}
+ move right_
+ lswitch(,,DA); {"\tt (,{,}DA)" at (last [],S)}
+ move right_
+ lswitch(,,dDO); {"\tt (,{,}dDO)" at (last [],S)}
+ move right_
+ lswitch(,,uDC); {"\tt (,{,}uDC)" at (last [],S)}
+ }
+# Row 2
+ move down; right_; {
+ lswitch(,,K); {S:"\tt (,{,}K)" Below}
+ move right_
+ lswitch(,,KD); {"\tt (,{,}KD)" at (last [],S)}
+ move right_
+ lswitch(,,KOD); {"\tt (,{,}KOD)" at (last [],S)}
+ move right_
+ lswitch(,,KCD); {"\tt (,{,}KCD)" at (last [],S)}
+ move right_
+ bswitch; {"\tt `bswitch'" at (last [],S)}
+ move right_
+ bswitch(,,C); {"\tt (,{,}C)" at (last [],S)}
+ }
+# Row 3
+ move down; right_; {
+ D: dswitch(,,); {S: "\tt ds{}witch(,{},)" Below}
+ thinlines_
+ { spline <- from 0.25 along_(D) up 0.1 then up 0.05 left 0.1
+ {"\tt W" rjust}
+ spline <- from D.c+(0,m4sc*2) up 0.1 then up 0.05 left 0.1
+ {"\tt B" rjust }}
+ thicklines_
+ move right_
+ D: dswitch(,,WdBK); {"\tt (,{,}WdBK)" at (last [],S)+(0,-4bp__)}
+ thinlines_
+ { spline <- from tr_xy(0,-2) up 0.1 then up 0.10 left 0.1
+ {"\tt dB" rjust}
+ spline <- from tr_xy(4,-2) right 0.1 then right 0.05 up 0.15
+ {"\tt K" above }}
+ thicklines_
+ move right_
+ dswitch(,,WBmdDK); {"\tt (,{,}WBmdDK)" at (last [],S)}
+ move right_
+ dswitch(,,WBKTr); {"\tt (,{,}WBKTr)" at (last [],S)}
+ move right_
+ dswitch(,,WdBL); {"\tt (,{,}WdBL)" at (last [],S+(0,-4bp__))}
+ move right_
+ dswitch(,,WBCo); {"\tt (,{,}WBCo)" at (last [],S)}
+ }
+# Row 4
+ move down; right_; {
+ dswitch(,,WBKCo); {S: "\tt (,{,}WBKCo)" Below}
+ move right_
+ dswitch(,,WBCb); {"\tt (,{,}WBCb)" at (last [],S)}
+ move right_
+ dswitch(,,WBDI); {"\tt (,{,}WBDI)" at (last [],S)}
+ move right_
+ dswitch(,,WBSd); {"\tt (,{,}WBSd)" at (last [],S)}
+ move right_
+ dswitch(,,WBFDI); {"\tt (,{,}WBFDI)" at (last [],S)}
+ move right_
+ dswitch(,,WBFSd); {"\tt (,{,}WBFSd)" at (last [],S)}
+ }
+# Row 5
+ move down moveht*5/4; right_; {
+ dswitch(,,WBTh); {S: "\tt (,{,}WBTh)" Below}
+ move right_
+ dswitch(,,WBKC); {"\tt (,{,}WBKC)" at (last [],S)}
+ move right_
+ dswitch(,,WBM); {"\tt (,{,}WBM)" at (last [],S)}
+ move right_
+ dswitch(,,WBCO); {"\tt (,{,}WBCO)" at (last [],S)}
+ move right_
+ dswitch(,,WBMP); {"\tt (,{,}WBMP)" at (last [],S)}
+ move right_
+ dswitch(,,WBoKCP); {"\tt (,{,}WBoKCP)" at (last [],S)}
+ }
+# Row 6
+ move down moveht*5/4; right_; {
+ dswitch(,,WBCY); {S: "\tt (,{,}WBCY)" Below}
+ move right_
+ dswitch(,,WBCZ); {"\tt (,{,}WBCZ)" at (last [],S)}
+ move right_
+ dswitch(,,WBCE); {"\tt (,{,}WBCE)" at (last [],S)}
+ move right_
+ dswitch(,,WBRH); {"\tt (,{,}WBRH)" at (last [],S)}
+ move right_
+ dswitch(,,WBRdH); {"\tt (,{,}WBRdH)" at (last [],S)}
+ move right_
+ dswitch(,,WBRHH); {"\tt (,{,}WBRHH)" at (last [],S)}
+ }
+# Row 7
+ move down moveht; right_; {
+ move down_ 2bp__; right_
+ dswitch(,,WBPr); {S: "\tt (,{,}WBPr)" Below}
+ move right_
+ dswitch(,,WBPrT); {S: "\tt (,{,}WBPrT)" Below}
+# move right_
+# Proxim; {S: "\tt Pro{}xim" Below}
+# move right_
+# Magn; {S: "\tt Mag{}n" Below}
+ move down_ 6bp__ then right_
+ dswitch(,,WBPrM); {S: "\tt (,{,}WBPrM)" Below}
+ }
+# Row 8
+ move down; right_; {
+ dswitch(,,WBMMR); {S: "\tt (,{,}WBMMR)" Below}
+ move right_
+ dswitch(,,WBMM); {"\tt (,{,}WBMM)" at (last [],S)}
+ move right_
+ dswitch(,,WBMR); {"\tt (,{,}WBMR)" at (last [],S)}
+ move right_
+ dswitch(,,WBEL); {"\tt (,{,}WBEL)" at (last [],S)}
+ move right_
+ dswitch(,,WBLE); {"\tt (,{,}WBLE)" at (last [],S)}
+ move right_
+ dswitch(,,WBoKEL); {"\tt (,{,}WBoKEL)" at (last [],S)}
+ }
+.PE
diff --git a/graphics/circuit_macros/doc/Tgate.tex b/graphics/circuit_macros/doc/Tgate.tex
new file mode 100644
index 0000000000..3dfb1c06b9
--- /dev/null
+++ b/graphics/circuit_macros/doc/Tgate.tex
@@ -0,0 +1,117 @@
+\begin{tikzpicture}[scale=2.54]
+% dpic version 2020.03.01 option -g for TikZ and PGF 1.01
+\ifx\dpiclw\undefined\newdimen\dpiclw\fi
+\global\def\dpicdraw{\draw[line width=\dpiclw]}
+\global\def\dpicstop{;}
+\dpiclw=0.8bp
+\dpiclw=0.8bp
+\dpicdraw (0.927778,0.231958)
+ --(1.230609,0.231958)\dpicstop
+\dpicdraw (1.230609,0.231958)
+ --(1.230609,0.273624)
+ --(1.297243,0.231958)
+ --(1.230609,0.190291)
+ --(1.230609,0.231958)\dpicstop
+\dpicdraw (1.374947,0.231958)
+ --(1.374947,0.273624)
+ --(1.308313,0.231958)
+ --(1.374947,0.190291)
+ --(1.374947,0.231958)\dpicstop
+\dpicdraw (1.374947,0.231958)
+ --(1.677778,0.231958)\dpicstop
+\dpicdraw[line width=0.4bp](1.302778,0.256014) circle (0.007103in)\dpicstop
+\dpicdraw (1.302778,0.274056)
+ --(1.302778,0.340211)\dpicstop
+\dpicdraw (1.302778,0.231958)
+ --(1.302778,0.159789)\dpicstop
+\draw (0.927778,0.231958) node[left=-2bp]{$A$};
+\draw (1.677778,0.231958) node[right=-2bp]{$B$};
+\draw (1.302778,0.159789) node[below right=-2bp]{$G$};
+\draw (1.302778,0.340211) node[above right=-2bp]{$Gb$};
+\draw (0.677778,0.231958) node[left=-2bp]{\tt tgate};
+\dpicdraw (0.927778,-0.231958)
+ --(1.230609,-0.231958)\dpicstop
+\dpicdraw (1.230609,-0.231958)
+ --(1.230609,-0.190291)
+ --(1.297243,-0.231958)
+ --(1.230609,-0.273624)
+ --(1.230609,-0.231958)\dpicstop
+\dpicdraw (1.374947,-0.231958)
+ --(1.374947,-0.190291)
+ --(1.308313,-0.231958)
+ --(1.374947,-0.273624)
+ --(1.374947,-0.231958)\dpicstop
+\dpicdraw (1.374947,-0.231958)
+ --(1.677778,-0.231958)\dpicstop
+\dpicdraw[line width=0.4bp](1.302778,-0.256014) circle (0.007103in)\dpicstop
+\dpicdraw (1.302778,-0.274056)
+ --(1.302778,-0.340211)\dpicstop
+\dpicdraw (1.302778,-0.231958)
+ --(1.302778,-0.159789)\dpicstop
+\draw (0.927778,-0.231958) node[left=-2bp]{$A$};
+\draw (1.677778,-0.231958) node[right=-2bp]{$B$};
+\draw (1.302778,-0.159789) node[above right=-2bp]{$G$};
+\draw (1.302778,-0.340211) node[below right=-2bp]{$Gb$};
+\draw (0.677778,-0.231958) node[left=-2bp]{\tt tgate(,L)};
+\dpicdraw (2.177778,0.018042)
+ --(2.427778,0.018042)\dpicstop
+\dpicdraw (2.677778,0.018042)
+ --(2.677778,0.068042)
+ --(2.427778,0.068042)
+ --(2.427778,-0.031958)
+ --(2.677778,-0.031958)
+ --(2.677778,0.018042)\dpicstop
+\dpicdraw (2.677778,0.018042)
+ --(2.927778,0.018042)\dpicstop
+\dpicdraw (2.552778,-0.031958)
+ --(2.552778,-0.131958)\dpicstop
+\draw (2.177778,0.018042) node[left=-2bp]{$A$};
+\draw (2.927778,0.018042) node[right=-2bp]{$B$};
+\draw (2.552778,-0.131958) node[right=-2bp]{$G$};
+\draw (2.552778,-0.270847) node[below=-2bp]{\tt tgate(,B)};
+\dpicdraw (3.455556,0.284789)
+ --(3.747222,0.284789)\dpicstop
+\dpicdraw (3.747222,0.284789)
+ --(3.913889,0.368122)
+ --(3.913889,0.201456)
+ --(3.747222,0.284789)\dpicstop
+\dpicdraw (3.913889,0.284789)
+ --(3.747222,0.368122)
+ --(3.747222,0.201456)
+ --(3.913889,0.284789)\dpicstop
+\dpicdraw[line width=0.4bp](3.830556,0.354233) circle (0.008202in)\dpicstop
+\dpicdraw (3.830556,0.375067)
+ --(3.830556,0.451456)\dpicstop
+\dpicdraw (3.830556,0.243122)
+ --(3.830556,0.159789)\dpicstop
+\dpicdraw (3.913889,0.284789)
+ --(4.205556,0.284789)\dpicstop
+\draw (3.455556,0.284789) node[left=-2bp]{$A$};
+\draw (4.205556,0.284789) node[right=-2bp]{$B$};
+\draw (3.830556,0.159789) node[below left=-2bp]{$G$};
+\draw (3.830556,0.451456) node[left=-2bp]{$Gb$};
+\draw (4.455556,0.284789) node[right=-2bp]{\tt ptrans};
+\dpicdraw (3.455556,-0.173544)
+ --(3.747222,-0.173544)\dpicstop
+\dpicdraw (3.747222,-0.173544)
+ --(3.913889,-0.090211)
+ --(3.913889,-0.256878)
+ --(3.747222,-0.173544)\dpicstop
+\dpicdraw (3.913889,-0.173544)
+ --(3.747222,-0.090211)
+ --(3.747222,-0.256878)
+ --(3.913889,-0.173544)\dpicstop
+\dpicdraw[line width=0.4bp](3.830556,-0.242989) circle (0.008202in)\dpicstop
+\dpicdraw (3.830556,-0.263822)
+ --(3.830556,-0.340211)\dpicstop
+\dpicdraw (3.830556,-0.131878)
+ --(3.830556,-0.048544)\dpicstop
+\dpicdraw (3.913889,-0.173544)
+ --(4.205556,-0.173544)\dpicstop
+\draw (3.455556,-0.173544) node[left=-2bp]{$A$};
+\draw (4.205556,-0.173544) node[right=-2bp]{$B$};
+\draw (3.830556,-0.048544) node[above right=-2bp]{$G$};
+\draw (3.830556,-0.340211) node[below right=-2bp]{$Gb$};
+\draw (4.455556,-0.173544) node[right=-2bp]{\tt ptrans(,L)};
+\end{tikzpicture}
+\vspace*{-0.5\baselineskip}
diff --git a/graphics/circuit_macros/doc/Tgate.m4 b/graphics/circuit_macros/doc/TgateMan.m4
index ff42cecb8d..ff42cecb8d 100644
--- a/graphics/circuit_macros/doc/Tgate.m4
+++ b/graphics/circuit_macros/doc/TgateMan.m4
diff --git a/graphics/circuit_macros/doc/Ttree.m4 b/graphics/circuit_macros/doc/Ttree.m4
deleted file mode 100644
index 6cf9203b00..0000000000
--- a/graphics/circuit_macros/doc/Ttree.m4
+++ /dev/null
@@ -1,56 +0,0 @@
-.PS
-# Ttree.m4
-# A binary tree using m4
-gen_init
-sinclude(tst.dim)
-s_init(Ttree)
-
-# `Node(no in row, head [location],
-# displacement of top of body (.n) wrt head,
-# body Node 1, body Node 2, ...) '
-define(`Node',`
- Head`$1': `$2'
- ifelse(`$3',,,`Body`$1': [
- Loopover_(`v',`v; define(`m4ct',m4Lx)',shift(shift(shift($@))))
- ] with .n at Head`$1' + `$3'
- connect(`$1',m4ct)')')
-
-define(`connect',`Bot: move from Head$1.sw to Head$1.se
-for_(1,`$2',1,
- `Top: move from Body$1.Head`'m4x.nw to Body$1.Head`'m4x.ne
- Move: move from Head$1 to Body$1.Head`'m4x
- if Bot.len*Top.len*Move.len > 0 then {
- line from Intersect_(Move,Top) to Intersect_(Move,Bot)}')')
-
- vsep = 0.75
-
- Node(1,s_box($`h(h(h(x_1,x_2),h(x_3,x_4)),h(h(x_5,x_6),h(x_7,x_8)))'$),
- (0,-vsep),
- Node(1,s_box($`h(h(x_1,x_2),h(x_3,x_4))'$),
- (0,-vsep),
- Node(1,s_box($`h(x_1,x_2)'$),
- (0,-vsep),
- Node(1,s_box($`x_1:=((A,pk_A),h_1)'$)),
- Node(2,s_box($`x_2:=((B,pk_B),h_2)'$) \
- with .n at last "".ne+(0.2,-vsep*2/3))),
- Node(2,s_box($`h(x_3,x_4)'$) with .nw at Head1.ne+(Body1.wid/2+0.1,0),
- (0,-vsep),
- Node(1,s_box($`x_3:=((A,pk_A^\prime),h_3)'$)),
- Node(2,s_box($`x_4:=((D,pk_D),h_4)'$) \
- with .n at last "".ne+(0.2,-vsep*2/3)))),
- Node(2,s_box($`h(h(x_5,x_6),h(x_7,x_8))'$) \
- with .nw at Head1.ne+(Body1.wid/2,0),
- (0,-vsep),
- Node(1,s_box($`h(x_5,x_6)'$),
- (0,-vsep*5/4),
- Node(1,s_box($`x_5:=((E,pk_E),h_5)'$)),
- Node(2,s_box($`x_6:=((H,pk_H),h_6)'$) \
- with .n at last "".ne+(0.2,-vsep*2/3))),
- Node(2,s_box($`h(x_7,x_8)'$) with .nw at Head1.ne+(Body1.wid/2+0.1,0),
- (0,-vsep*5/4),
- Node(1,s_box($`x_7:=((D,pk_D^\prime),h_7)'$)),
- Node(2,s_box($`x_8:=((K,pk_K),h_8)'$) \
- with .n at last "".ne+(0.2,-vsep*2/3))),
- Node(3,s_box($`h(x_9)'$) at 0.5 between Head1 and Head2)))
-
-.PE
diff --git a/graphics/circuit_macros/doc/Variable.tex b/graphics/circuit_macros/doc/Variable.tex
new file mode 100644
index 0000000000..585087d5e0
--- /dev/null
+++ b/graphics/circuit_macros/doc/Variable.tex
@@ -0,0 +1,306 @@
+\begin{tikzpicture}[scale=2.54]
+% dpic version 2020.03.01 option -g for TikZ and PGF 1.01
+\ifx\dpiclw\undefined\newdimen\dpiclw\fi
+\global\def\dpicdraw{\draw[line width=\dpiclw]}
+\global\def\dpicstop{;}
+\dpiclw=0.8bp
+\dpiclw=0.8bp
+\dpicdraw (-1.01349,0)
+ --(-1.01349,-0.225)\dpicstop
+\dpicdraw (-1.096823,-0.225)
+ --(-0.930157,-0.225)\dpicstop
+\dpicdraw (-1.096823,-0.275)
+ --(-0.930157,-0.275)\dpicstop
+\dpicdraw (-1.01349,-0.275)
+ --(-1.01349,-0.5)\dpicstop
+\filldraw[line width=0bp](-0.925102,-0.196967)
+ --(-0.872069,-0.108579)
+ --(-0.960457,-0.161612) --cycle\dpicstop
+\dpicdraw (-1.154911,-0.391421)
+ --(-0.888266,-0.124776)\dpicstop
+\dpicdraw (-0.51349,0)
+ --(-0.51349,-0.125)
+ --(-0.471823,-0.145833)
+ --(-0.555157,-0.1875)
+ --(-0.471823,-0.229167)
+ --(-0.555157,-0.270833)
+ --(-0.471823,-0.3125)
+ --(-0.555157,-0.354167)
+ --(-0.51349,-0.375)
+ --(-0.51349,-0.5)\dpicstop
+\dpicdraw (-0.654911,-0.391421)
+ --(-0.372069,-0.108579)\dpicstop
+\dpicdraw (-0.372069,-0.108579)
+ --(-0.372069,-0.025245)\dpicstop
+\dpicdraw (-0.01349,0)
+ --(-0.01349,-0.225)\dpicstop
+\dpicdraw (-0.07599,-0.225)
+ --(0.04901,-0.225)\dpicstop
+\dpicdraw (-0.07599,-0.275)
+ ..controls (-0.037315,-0.252671) and (0.010335,-0.252671)
+ ..(0.04901,-0.275)\dpicstop
+\dpicdraw (-0.01349,-0.258253)
+ --(-0.01349,-0.5)\dpicstop
+\filldraw[line width=0bp](0.074898,-0.196967)
+ --(0.127931,-0.108579)
+ --(0.039543,-0.161612) --cycle\dpicstop
+\dpicdraw (-0.154911,-0.391421)
+ --(0.111734,-0.124776)\dpicstop
+\dpicdraw (0.48651,0)
+ --(0.48651,-0.125)\dpicstop
+\dpicdraw (0.48651,-0.125)
+ --(0.480955,-0.125)\dpicstop
+\dpicdraw (0.48651,-0.125)
+ ..controls (0.503769,-0.125) and (0.51776,-0.138991)
+ ..(0.51776,-0.15625)
+ ..controls (0.51776,-0.173509) and (0.503769,-0.1875)
+ ..(0.48651,-0.1875)\dpicstop
+\dpicdraw (0.48651,-0.1875)
+ --(0.480955,-0.1875)\dpicstop
+\dpicdraw (0.48651,-0.1875)
+ ..controls (0.503769,-0.1875) and (0.51776,-0.201491)
+ ..(0.51776,-0.21875)
+ ..controls (0.51776,-0.236009) and (0.503769,-0.25)
+ ..(0.48651,-0.25)\dpicstop
+\dpicdraw (0.48651,-0.25)
+ --(0.480955,-0.25)\dpicstop
+\dpicdraw (0.48651,-0.25)
+ ..controls (0.503769,-0.25) and (0.51776,-0.263991)
+ ..(0.51776,-0.28125)
+ ..controls (0.51776,-0.298509) and (0.503769,-0.3125)
+ ..(0.48651,-0.3125)\dpicstop
+\dpicdraw (0.48651,-0.3125)
+ --(0.480955,-0.3125)\dpicstop
+\dpicdraw (0.48651,-0.3125)
+ ..controls (0.503769,-0.3125) and (0.51776,-0.326491)
+ ..(0.51776,-0.34375)
+ ..controls (0.51776,-0.361009) and (0.503769,-0.375)
+ ..(0.48651,-0.375)\dpicstop
+\dpicdraw (0.48651,-0.375)
+ --(0.480955,-0.375)\dpicstop
+\dpicdraw (0.48651,-0.375)
+ --(0.48651,-0.5)\dpicstop
+\filldraw[line width=0bp](0.590523,-0.196967)
+ --(0.643556,-0.108579)
+ --(0.555168,-0.161612) --cycle\dpicstop
+\dpicdraw (0.360714,-0.391421)
+ --(0.627359,-0.124776)\dpicstop
+\dpicdraw (0.98651,0)
+ --(0.98651,-0.108266)\dpicstop
+\dpicdraw[line width=0.4bp](0.98651,-0.108266) circle (0.00109in)\dpicstop
+\dpicdraw (0.98651,-0.108266)
+ ..controls (1.024082,-0.090746) and (1.065429,-0.123931)
+ ..(1.056456,-0.164404)
+ ..controls (1.047483,-0.204877) and (0.995986,-0.217478)
+ ..(0.969339,-0.185721)\dpicstop
+\dpicdraw[line width=0.4bp](0.969339,-0.185721) circle (0.00109in)\dpicstop
+\dpicdraw (0.969339,-0.185721)
+ ..controls (0.999344,-0.149962) and (1.057641,-0.17118)
+ ..(1.057641,-0.217861)
+ ..controls (1.057641,-0.264541) and (0.999344,-0.285759)
+ ..(0.969339,-0.25)\dpicstop
+\dpicdraw[line width=0.4bp](0.969339,-0.25) circle (0.00109in)\dpicstop
+\dpicdraw (0.969339,-0.25)
+ ..controls (0.999344,-0.214241) and (1.057641,-0.235459)
+ ..(1.057641,-0.282139)
+ ..controls (1.057641,-0.32882) and (0.999344,-0.350038)
+ ..(0.969339,-0.314279)\dpicstop
+\dpicdraw[line width=0.4bp](0.969339,-0.314279) circle (0.00109in)\dpicstop
+\dpicdraw (0.969339,-0.314279)
+ ..controls (0.995986,-0.282522) and (1.047483,-0.295123)
+ ..(1.056456,-0.335596)
+ ..controls (1.065429,-0.376069) and (1.024082,-0.409254)
+ ..(0.98651,-0.391734)\dpicstop
+\dpicdraw[line width=0.4bp](0.98651,-0.391734) circle (0.00109in)\dpicstop
+\dpicdraw (0.98651,-0.391734)
+ --(0.98651,-0.5)\dpicstop
+\filldraw[line width=0bp](1.101878,-0.196967)
+ --(1.154911,-0.108579)
+ --(1.066523,-0.161612) --cycle\dpicstop
+\dpicdraw (0.872069,-0.391421)
+ --(1.138714,-0.124776)\dpicstop
+\draw (2.804911,0.520711) node{\tt C};
+\draw (3.554911,0.520711) node{\tt S};
+\draw (1.679911,0.320711) node{\tt A};
+\dpicdraw (1.804911,0.320711)
+ --(2.029911,0.320711)\dpicstop
+\dpicdraw (2.029911,0.258211)
+ --(2.029911,0.383211)\dpicstop
+\dpicdraw (2.079911,0.258211)
+ ..controls (2.057582,0.296886) and (2.057582,0.344536)
+ ..(2.079911,0.383211)\dpicstop
+\dpicdraw (2.063164,0.320711)
+ --(2.304911,0.320711)\dpicstop
+\filldraw[line width=0bp](2.1433,0.373744)
+ --(2.196333,0.462132)
+ --(2.107944,0.409099) --cycle\dpicstop
+\dpicdraw (1.91349,0.179289)
+ --(2.180136,0.445935)\dpicstop
+\dpicdraw (2.554911,0.320711)
+ --(2.779911,0.320711)\dpicstop
+\dpicdraw (2.779911,0.258211)
+ --(2.779911,0.383211)\dpicstop
+\dpicdraw (2.829911,0.258211)
+ ..controls (2.807582,0.296886) and (2.807582,0.344536)
+ ..(2.829911,0.383211)\dpicstop
+\dpicdraw (2.813164,0.320711)
+ --(3.054911,0.320711)\dpicstop
+\filldraw[line width=0bp](2.8933,0.373744)
+ --(2.946333,0.462132)
+ --(2.857944,0.409099) --cycle\dpicstop
+\dpicdraw (2.66349,0.179289)
+ --(2.930136,0.445935)\dpicstop
+\dpicdraw (2.996333,0.432132)
+ --(3.055258,0.491058)\dpicstop
+\dpicdraw (3.304911,0.320711)
+ --(3.529911,0.320711)\dpicstop
+\dpicdraw (3.529911,0.258211)
+ --(3.529911,0.383211)\dpicstop
+\dpicdraw (3.579911,0.258211)
+ ..controls (3.557582,0.296886) and (3.557582,0.344536)
+ ..(3.579911,0.383211)\dpicstop
+\dpicdraw (3.563164,0.320711)
+ --(3.804911,0.320711)\dpicstop
+\filldraw[line width=0bp](3.6433,0.373744)
+ --(3.696333,0.462132)
+ --(3.607944,0.409099) --cycle\dpicstop
+\dpicdraw (3.41349,0.179289)
+ --(3.680136,0.445935)\dpicstop
+\dpicdraw (3.746333,0.402132)
+ --(3.746333,0.432132)
+ --(3.806333,0.432132)
+ --(3.806333,0.462132)\dpicstop
+\draw (1.679911,-0.079289) node{\tt P};
+\dpicdraw (1.804911,-0.079289)
+ --(2.029911,-0.079289)\dpicstop
+\dpicdraw (2.029911,-0.141789)
+ --(2.029911,-0.016789)\dpicstop
+\dpicdraw (2.079911,-0.141789)
+ ..controls (2.057582,-0.103114) and (2.057582,-0.055464)
+ ..(2.079911,-0.016789)\dpicstop
+\dpicdraw (2.063164,-0.079289)
+ --(2.304911,-0.079289)\dpicstop
+\dpicdraw (1.91349,-0.220711)
+ --(2.196333,0.062132)\dpicstop
+\dpicdraw (2.16687,0.091595)
+ --(2.225795,0.032669)\dpicstop
+\dpicdraw (2.554911,-0.079289)
+ --(2.779911,-0.079289)\dpicstop
+\dpicdraw (2.779911,-0.141789)
+ --(2.779911,-0.016789)\dpicstop
+\dpicdraw (2.829911,-0.141789)
+ ..controls (2.807582,-0.103114) and (2.807582,-0.055464)
+ ..(2.829911,-0.016789)\dpicstop
+\dpicdraw (2.813164,-0.079289)
+ --(3.054911,-0.079289)\dpicstop
+\dpicdraw (2.66349,-0.220711)
+ --(2.946333,0.062132)\dpicstop
+\dpicdraw (2.91687,0.091595)
+ --(2.975795,0.032669)\dpicstop
+\dpicdraw (2.996333,0.032132)
+ --(3.055258,0.091058)\dpicstop
+\dpicdraw (3.304911,-0.079289)
+ --(3.529911,-0.079289)\dpicstop
+\dpicdraw (3.529911,-0.141789)
+ --(3.529911,-0.016789)\dpicstop
+\dpicdraw (3.579911,-0.141789)
+ ..controls (3.557582,-0.103114) and (3.557582,-0.055464)
+ ..(3.579911,-0.016789)\dpicstop
+\dpicdraw (3.563164,-0.079289)
+ --(3.804911,-0.079289)\dpicstop
+\dpicdraw (3.41349,-0.220711)
+ --(3.696333,0.062132)\dpicstop
+\dpicdraw (3.66687,0.091595)
+ --(3.725795,0.032669)\dpicstop
+\dpicdraw (3.746333,0.002132)
+ --(3.746333,0.032132)
+ --(3.806333,0.032132)
+ --(3.806333,0.062132)\dpicstop
+\draw (1.679911,-0.479289) node{\tt L};
+\dpicdraw (1.804911,-0.479289)
+ --(2.029911,-0.479289)\dpicstop
+\dpicdraw (2.029911,-0.541789)
+ --(2.029911,-0.416789)\dpicstop
+\dpicdraw (2.079911,-0.541789)
+ ..controls (2.057582,-0.503114) and (2.057582,-0.455464)
+ ..(2.079911,-0.416789)\dpicstop
+\dpicdraw (2.063164,-0.479289)
+ --(2.304911,-0.479289)\dpicstop
+\dpicdraw (1.91349,-0.620711)
+ --(2.196333,-0.337868)\dpicstop
+\dpicdraw (2.554911,-0.479289)
+ --(2.779911,-0.479289)\dpicstop
+\dpicdraw (2.779911,-0.541789)
+ --(2.779911,-0.416789)\dpicstop
+\dpicdraw (2.829911,-0.541789)
+ ..controls (2.807582,-0.503114) and (2.807582,-0.455464)
+ ..(2.829911,-0.416789)\dpicstop
+\dpicdraw (2.813164,-0.479289)
+ --(3.054911,-0.479289)\dpicstop
+\dpicdraw (2.66349,-0.620711)
+ --(2.946333,-0.337868)\dpicstop
+\dpicdraw (2.996333,-0.367868)
+ --(3.055258,-0.308942)\dpicstop
+\dpicdraw (3.304911,-0.479289)
+ --(3.529911,-0.479289)\dpicstop
+\dpicdraw (3.529911,-0.541789)
+ --(3.529911,-0.416789)\dpicstop
+\dpicdraw (3.579911,-0.541789)
+ ..controls (3.557582,-0.503114) and (3.557582,-0.455464)
+ ..(3.579911,-0.416789)\dpicstop
+\dpicdraw (3.563164,-0.479289)
+ --(3.804911,-0.479289)\dpicstop
+\dpicdraw (3.41349,-0.620711)
+ --(3.696333,-0.337868)\dpicstop
+\dpicdraw (3.746333,-0.397868)
+ --(3.746333,-0.367868)
+ --(3.806333,-0.367868)
+ --(3.806333,-0.337868)\dpicstop
+\draw (1.679911,-0.879289) node{\tt N};
+\dpicdraw (1.804911,-0.879289)
+ --(2.029911,-0.879289)\dpicstop
+\dpicdraw (2.029911,-0.941789)
+ --(2.029911,-0.816789)\dpicstop
+\dpicdraw (2.079911,-0.941789)
+ ..controls (2.057582,-0.903114) and (2.057582,-0.855464)
+ ..(2.079911,-0.816789)\dpicstop
+\dpicdraw (2.063164,-0.879289)
+ --(2.304911,-0.879289)\dpicstop
+\dpicdraw (1.91349,-1.020711)
+ --(2.196333,-0.737868)\dpicstop
+\dpicdraw (1.91349,-1.020711)
+ --(1.830157,-1.020711)\dpicstop
+\dpicdraw (2.554911,-0.879289)
+ --(2.779911,-0.879289)\dpicstop
+\dpicdraw (2.779911,-0.941789)
+ --(2.779911,-0.816789)\dpicstop
+\dpicdraw (2.829911,-0.941789)
+ ..controls (2.807582,-0.903114) and (2.807582,-0.855464)
+ ..(2.829911,-0.816789)\dpicstop
+\dpicdraw (2.813164,-0.879289)
+ --(3.054911,-0.879289)\dpicstop
+\dpicdraw (2.66349,-1.020711)
+ --(2.946333,-0.737868)\dpicstop
+\dpicdraw (2.66349,-1.020711)
+ --(2.580157,-1.020711)\dpicstop
+\dpicdraw (2.996333,-0.767868)
+ --(3.055258,-0.708942)\dpicstop
+\dpicdraw (3.304911,-0.879289)
+ --(3.529911,-0.879289)\dpicstop
+\dpicdraw (3.529911,-0.941789)
+ --(3.529911,-0.816789)\dpicstop
+\dpicdraw (3.579911,-0.941789)
+ ..controls (3.557582,-0.903114) and (3.557582,-0.855464)
+ ..(3.579911,-0.816789)\dpicstop
+\dpicdraw (3.563164,-0.879289)
+ --(3.804911,-0.879289)\dpicstop
+\dpicdraw (3.41349,-1.020711)
+ --(3.696333,-0.737868)\dpicstop
+\dpicdraw (3.41349,-1.020711)
+ --(3.330157,-1.020711)\dpicstop
+\dpicdraw (3.746333,-0.797868)
+ --(3.746333,-0.767868)
+ --(3.806333,-0.767868)
+ --(3.806333,-0.737868)\dpicstop
+\end{tikzpicture}
+\vspace*{-0.5\baselineskip}
diff --git a/graphics/circuit_macros/doc/Variable.m4 b/graphics/circuit_macros/doc/VariableMan.m4
index 6fac01e164..e52e30913d 100644
--- a/graphics/circuit_macros/doc/Variable.m4
+++ b/graphics/circuit_macros/doc/VariableMan.m4
@@ -3,11 +3,11 @@
cct_init
define(`elen_',dimen_); down_
-[ { variable(`capacitor') }; move right
- { variable(`resistor',uN) }; move right
- { variable(`capacitor(,C)') }; move right
- { variable(`inductor') }; move right
- { variable(`inductor(,W)') }
+[ { variable(`resistor',A) }; {"A" at last line.end below}; move right
+ { variable(`resistor',N) }; {"N" at last line.end below}; move right
+ { variable(`resistor',uN) }; {"uN" at last line.end below}; move right
+ { variable(`resistor',NN) }; {"uN" at last line.end below}; move right
+ { variable(`resistor',uNN) }; {"uNN" at last line.end below}; #; move right
]
[
skp = 0.4
diff --git a/graphics/circuit_macros/doc/Version.tex b/graphics/circuit_macros/doc/Version.tex
index 4bb8dbffa5..ca449b0a0b 100644
--- a/graphics/circuit_macros/doc/Version.tex
+++ b/graphics/circuit_macros/doc/Version.tex
@@ -1 +1 @@
-Version 9.2
+Version 9.3
diff --git a/graphics/circuit_macros/doc/Windings.m4 b/graphics/circuit_macros/doc/WindingsMan.m4
index 0c1ff4b87b..0c1ff4b87b 100644
--- a/graphics/circuit_macros/doc/Windings.m4
+++ b/graphics/circuit_macros/doc/WindingsMan.m4
diff --git a/graphics/circuit_macros/doc/Xform.tex b/graphics/circuit_macros/doc/Xform.tex
new file mode 100644
index 0000000000..6c527c38cc
--- /dev/null
+++ b/graphics/circuit_macros/doc/Xform.tex
@@ -0,0 +1,648 @@
+\begin{tikzpicture}[scale=2.54]
+% dpic version 2020.03.01 option -g for TikZ and PGF 1.01
+\ifx\dpiclw\undefined\newdimen\dpiclw\fi
+\global\def\dpicdraw{\draw[line width=\dpiclw]}
+\global\def\dpicstop{;}
+\dpiclw=0.8bp
+\dpiclw=0.8bp
+\dpicdraw (-0.104167,-0)
+ --(-0.104167,-0.041667)\dpicstop
+\dpicdraw (-0.104167,-0.041667)
+ --(-0.109722,-0.041667)\dpicstop
+\dpicdraw (-0.104167,-0.041667)
+ ..controls (-0.086908,-0.041667) and (-0.072917,-0.055658)
+ ..(-0.072917,-0.072917)
+ ..controls (-0.072917,-0.090176) and (-0.086908,-0.104167)
+ ..(-0.104167,-0.104167)\dpicstop
+\dpicdraw (-0.104167,-0.104167)
+ --(-0.109722,-0.104167)\dpicstop
+\dpicdraw (-0.104167,-0.104167)
+ ..controls (-0.086908,-0.104167) and (-0.072917,-0.118158)
+ ..(-0.072917,-0.135417)
+ ..controls (-0.072917,-0.152676) and (-0.086908,-0.166667)
+ ..(-0.104167,-0.166667)\dpicstop
+\dpicdraw (-0.104167,-0.166667)
+ --(-0.109722,-0.166667)\dpicstop
+\dpicdraw (-0.104167,-0.166667)
+ ..controls (-0.086908,-0.166667) and (-0.072917,-0.180658)
+ ..(-0.072917,-0.197917)
+ ..controls (-0.072917,-0.215176) and (-0.086908,-0.229167)
+ ..(-0.104167,-0.229167)\dpicstop
+\dpicdraw (-0.104167,-0.229167)
+ --(-0.109722,-0.229167)\dpicstop
+\dpicdraw (-0.104167,-0.229167)
+ ..controls (-0.0625,-0.229167) and (-0.0625,-0.291667)
+ ..(-0.104167,-0.291667)\dpicstop
+\dpicdraw (-0.104167,-0.291667)
+ --(-0.109722,-0.291667)\dpicstop
+\dpicdraw (-0.104167,-0.291667)
+ --(-0.104167,-0.333333)\dpicstop
+\dpicdraw (-0.03125,-0.041667)
+ --(-0.03125,-0.291667)\dpicstop
+\dpicdraw (0.03125,-0.041667)
+ --(0.03125,-0.291667)\dpicstop
+\dpicdraw (0.104167,-0.333333)
+ --(0.104167,-0.291667)\dpicstop
+\dpicdraw (0.104167,-0.291667)
+ --(0.109722,-0.291667)\dpicstop
+\dpicdraw (0.104167,-0.291667)
+ ..controls (0.0625,-0.291667) and (0.0625,-0.229167)
+ ..(0.104167,-0.229167)\dpicstop
+\dpicdraw (0.104167,-0.229167)
+ --(0.109722,-0.229167)\dpicstop
+\dpicdraw (0.104167,-0.229167)
+ ..controls (0.0625,-0.229167) and (0.0625,-0.166667)
+ ..(0.104167,-0.166667)\dpicstop
+\dpicdraw (0.104167,-0.166667)
+ --(0.109722,-0.166667)\dpicstop
+\dpicdraw (0.104167,-0.166667)
+ ..controls (0.0625,-0.166667) and (0.0625,-0.104167)
+ ..(0.104167,-0.104167)\dpicstop
+\dpicdraw (0.104167,-0.104167)
+ --(0.109722,-0.104167)\dpicstop
+\dpicdraw (0.104167,-0.104167)
+ ..controls (0.0625,-0.104167) and (0.0625,-0.041667)
+ ..(0.104167,-0.041667)\dpicstop
+\dpicdraw (0.104167,-0.041667)
+ --(0.109722,-0.041667)\dpicstop
+\dpicdraw (0.104167,-0.041667)
+ --(0.104167,0)\dpicstop
+\dpiclw=0.4bp
+\filldraw[line width=0bp](-0.183488,0.024269)
+ --(-0.116032,0.007119)
+ --(-0.162908,0.058569) --cycle\dpicstop
+\dpicdraw (-0.13261,0.017066)
+ --(-0.212302,0.064881)\dpicstop
+\draw (-0.212302,0.064881) node[left=-2bp]{\sl P1};
+\filldraw[line width=0bp](-0.162908,-0.391902)
+ --(-0.116032,-0.340452)
+ --(-0.183488,-0.357602) --cycle\dpicstop
+\dpicdraw (-0.13261,-0.3504)
+ --(-0.212302,-0.398214)\dpicstop
+\draw (-0.212302,-0.398214) node[left=-2bp]{\sl P2};
+\filldraw[line width=0bp](-0.18467,-0.186667)
+ --(-0.118004,-0.166667)
+ --(-0.18467,-0.146667) --cycle\dpicstop
+\dpicdraw (-0.137338,-0.166667)
+ --(-0.21033,-0.166667)\dpicstop
+\draw (-0.21033,-0.166667) node[left=-2bp]{\sl TP};
+\filldraw[line width=0bp](0.162908,0.058569)
+ --(0.116032,0.007119)
+ --(0.183488,0.024269) --cycle\dpicstop
+\dpicdraw (0.13261,0.017066)
+ --(0.212302,0.064881)\dpicstop
+\draw (0.212302,0.064881) node[right=-2bp]{\sl S1};
+\filldraw[line width=0bp](0.183488,-0.357602)
+ --(0.116032,-0.340452)
+ --(0.162908,-0.391902) --cycle\dpicstop
+\dpicdraw (0.13261,-0.3504)
+ --(0.212302,-0.398214)\dpicstop
+\draw (0.212302,-0.398214) node[right=-2bp]{\sl S2};
+\filldraw[line width=0bp](0.18467,-0.146667)
+ --(0.118004,-0.166667)
+ --(0.18467,-0.186667) --cycle\dpicstop
+\dpicdraw (0.137338,-0.166667)
+ --(0.21033,-0.166667)\dpicstop
+\draw (0.21033,-0.166667) node[right=-2bp]{\sl TS};
+\draw (0,-0.633333) node{\tt transformer};
+\dpiclw=0.8bp
+\dpicdraw (1.115278,0.133333)
+ --(1.115278,-0.104167)\dpicstop
+\dpicdraw (1.115278,-0.104167)
+ --(1.109722,-0.104167)\dpicstop
+\dpicdraw (1.115278,-0.104167)
+ ..controls (1.132537,-0.104167) and (1.146528,-0.118158)
+ ..(1.146528,-0.135417)
+ ..controls (1.146528,-0.152676) and (1.132537,-0.166667)
+ ..(1.115278,-0.166667)\dpicstop
+\dpicdraw (1.115278,-0.166667)
+ --(1.109722,-0.166667)\dpicstop
+\dpicdraw (1.115278,-0.166667)
+ ..controls (1.132537,-0.166667) and (1.146528,-0.180658)
+ ..(1.146528,-0.197917)
+ ..controls (1.146528,-0.215176) and (1.132537,-0.229167)
+ ..(1.115278,-0.229167)\dpicstop
+\dpicdraw (1.115278,-0.229167)
+ --(1.109722,-0.229167)\dpicstop
+\dpicdraw (1.115278,-0.229167)
+ --(1.115278,-0.466667)\dpicstop
+\dpicdraw[dash pattern=on 0.025in off 0.025in](1.188194,0.083333)
+ --(1.188194,-0.416667)\dpicstop
+\dpicdraw[dash pattern=on 0.025in off 0.025in](1.250694,0.083333)
+ --(1.250694,-0.416667)\dpicstop
+\dpicdraw (1.323611,-0.416667)
+ --(1.323611,-0.416667)\dpicstop
+\dpicdraw (1.323611,-0.416667)
+ --(1.329167,-0.416667)\dpicstop
+\dpicdraw (1.323611,-0.416667)
+ ..controls (1.306352,-0.416667) and (1.292361,-0.402676)
+ ..(1.292361,-0.385417)
+ ..controls (1.292361,-0.368158) and (1.306352,-0.354167)
+ ..(1.323611,-0.354167)\dpicstop
+\dpicdraw (1.323611,-0.354167)
+ --(1.329167,-0.354167)\dpicstop
+\dpicdraw (1.323611,-0.354167)
+ ..controls (1.306352,-0.354167) and (1.292361,-0.340176)
+ ..(1.292361,-0.322917)
+ ..controls (1.292361,-0.305658) and (1.306352,-0.291667)
+ ..(1.323611,-0.291667)\dpicstop
+\dpicdraw (1.323611,-0.291667)
+ --(1.329167,-0.291667)\dpicstop
+\dpicdraw (1.323611,-0.291667)
+ ..controls (1.306352,-0.291667) and (1.292361,-0.277676)
+ ..(1.292361,-0.260417)
+ ..controls (1.292361,-0.243158) and (1.306352,-0.229167)
+ ..(1.323611,-0.229167)\dpicstop
+\dpicdraw (1.323611,-0.229167)
+ --(1.329167,-0.229167)\dpicstop
+\dpicdraw (1.323611,-0.229167)
+ ..controls (1.306352,-0.229167) and (1.292361,-0.215176)
+ ..(1.292361,-0.197917)
+ ..controls (1.292361,-0.180658) and (1.306352,-0.166667)
+ ..(1.323611,-0.166667)\dpicstop
+\dpicdraw (1.323611,-0.166667)
+ --(1.329167,-0.166667)\dpicstop
+\dpicdraw (1.323611,-0.166667)
+ ..controls (1.306352,-0.166667) and (1.292361,-0.152676)
+ ..(1.292361,-0.135417)
+ ..controls (1.292361,-0.118158) and (1.306352,-0.104167)
+ ..(1.323611,-0.104167)\dpicstop
+\dpicdraw (1.323611,-0.104167)
+ --(1.329167,-0.104167)\dpicstop
+\dpicdraw (1.323611,-0.104167)
+ ..controls (1.306352,-0.104167) and (1.292361,-0.090176)
+ ..(1.292361,-0.072917)
+ ..controls (1.292361,-0.055658) and (1.306352,-0.041667)
+ ..(1.323611,-0.041667)\dpicstop
+\dpicdraw (1.323611,-0.041667)
+ --(1.329167,-0.041667)\dpicstop
+\dpicdraw (1.323611,-0.041667)
+ ..controls (1.306352,-0.041667) and (1.292361,-0.027676)
+ ..(1.292361,-0.010417)
+ ..controls (1.292361,0.006842) and (1.306352,0.020833)
+ ..(1.323611,0.020833)\dpicstop
+\dpicdraw (1.323611,0.020833)
+ --(1.329167,0.020833)\dpicstop
+\dpicdraw (1.323611,0.020833)
+ ..controls (1.306352,0.020833) and (1.292361,0.034824)
+ ..(1.292361,0.052083)
+ ..controls (1.292361,0.069342) and (1.306352,0.083333)
+ ..(1.323611,0.083333)\dpicstop
+\dpicdraw (1.323611,0.083333)
+ --(1.329167,0.083333)\dpicstop
+\dpicdraw (1.323611,0.083333)
+ --(1.323611,0.083333)\dpicstop
+\dpiclw=0.4bp
+\filldraw[line width=0bp](1.035957,0.157602)
+ --(1.103413,0.140452)
+ --(1.056536,0.191902) --cycle\dpicstop
+\dpicdraw (1.086834,0.1504)
+ --(1.007143,0.198214)\dpicstop
+\draw (1.007143,0.198214) node[left=-2bp]{\sl P1};
+\filldraw[line width=0bp](1.056536,-0.525235)
+ --(1.103413,-0.473786)
+ --(1.035957,-0.490936) --cycle\dpicstop
+\dpicdraw (1.086834,-0.483733)
+ --(1.007143,-0.531548)\dpicstop
+\draw (1.007143,-0.531548) node[left=-2bp]{\sl P2};
+\filldraw[line width=0bp](1.034774,-0.186667)
+ --(1.101441,-0.166667)
+ --(1.034774,-0.146667) --cycle\dpicstop
+\dpicdraw (1.082107,-0.166667)
+ --(1.009115,-0.166667)\dpicstop
+\draw (1.009115,-0.166667) node[left=-2bp]{\sl TP};
+\filldraw[line width=0bp](1.382353,0.141902)
+ --(1.335476,0.090452)
+ --(1.402932,0.107602) --cycle\dpicstop
+\dpicdraw (1.352055,0.1004)
+ --(1.431746,0.148214)\dpicstop
+\draw (1.431746,0.148214) node[right=-2bp]{\sl S1};
+\filldraw[line width=0bp](1.402932,-0.440936)
+ --(1.335476,-0.423786)
+ --(1.382353,-0.475235) --cycle\dpicstop
+\dpicdraw (1.352055,-0.433733)
+ --(1.431746,-0.481548)\dpicstop
+\draw (1.431746,-0.481548) node[right=-2bp]{\sl S2};
+\filldraw[line width=0bp](1.404115,-0.146667)
+ --(1.337448,-0.166667)
+ --(1.404115,-0.186667) --cycle\dpicstop
+\dpicdraw (1.356782,-0.166667)
+ --(1.429774,-0.166667)\dpicstop
+\draw (1.429774,-0.166667) node[right=-2bp]{\sl TS};
+\draw (1.219444,-0.766667) node{\tt ...(down\_ 0.6,,2,P,8)};
+\dpiclw=0.8bp
+\dpicdraw (2.349105,0.086124)
+ --(2.349105,0.086124)\dpicstop
+\dpicdraw[line width=0.4bp](2.349105,0.086124) circle (0.00109in)\dpicstop
+\dpicdraw (2.349105,0.086124)
+ ..controls (2.386677,0.103644) and (2.428024,0.07046)
+ ..(2.419051,0.029987)
+ ..controls (2.410078,-0.010486) and (2.358581,-0.023088)
+ ..(2.331934,0.00867)\dpicstop
+\dpicdraw[line width=0.4bp](2.331934,0.00867) circle (0.00109in)\dpicstop
+\dpicdraw (2.331934,0.00867)
+ ..controls (2.36194,0.044429) and (2.420236,0.023211)
+ ..(2.420236,-0.02347)
+ ..controls (2.420236,-0.07015) and (2.36194,-0.091368)
+ ..(2.331934,-0.055609)\dpicstop
+\dpicdraw[line width=0.4bp](2.331934,-0.055609) circle (0.00109in)\dpicstop
+\dpicdraw (2.331934,-0.055609)
+ ..controls (2.36194,-0.01985) and (2.420236,-0.041068)
+ ..(2.420236,-0.087749)
+ ..controls (2.420236,-0.134429) and (2.36194,-0.155647)
+ ..(2.331934,-0.119888)\dpicstop
+\dpicdraw[line width=0.4bp](2.331934,-0.119888) circle (0.00109in)\dpicstop
+\dpicdraw (2.331934,-0.119888)
+ ..controls (2.36194,-0.084129) and (2.420236,-0.105347)
+ ..(2.420236,-0.152027)
+ ..controls (2.420236,-0.198708) and (2.36194,-0.219926)
+ ..(2.331934,-0.184167)\dpicstop
+\dpicdraw[line width=0.4bp](2.331934,-0.184167) circle (0.00109in)\dpicstop
+\dpicdraw (2.331934,-0.184167)
+ ..controls (2.36194,-0.148407) and (2.420236,-0.169626)
+ ..(2.420236,-0.216306)
+ ..controls (2.420236,-0.262987) and (2.36194,-0.284205)
+ ..(2.331934,-0.248445)\dpicstop
+\dpicdraw[line width=0.4bp](2.331934,-0.248445) circle (0.00109in)\dpicstop
+\dpicdraw (2.331934,-0.248445)
+ ..controls (2.36194,-0.212686) and (2.420236,-0.233904)
+ ..(2.420236,-0.280585)
+ ..controls (2.420236,-0.327265) and (2.36194,-0.348484)
+ ..(2.331934,-0.312724)\dpicstop
+\dpicdraw[line width=0.4bp](2.331934,-0.312724) circle (0.00109in)\dpicstop
+\dpicdraw (2.331934,-0.312724)
+ ..controls (2.36194,-0.276965) and (2.420236,-0.298183)
+ ..(2.420236,-0.344864)
+ ..controls (2.420236,-0.391544) and (2.36194,-0.412762)
+ ..(2.331934,-0.377003)\dpicstop
+\dpicdraw[line width=0.4bp](2.331934,-0.377003) circle (0.00109in)\dpicstop
+\dpicdraw (2.331934,-0.377003)
+ ..controls (2.358581,-0.345246) and (2.410078,-0.357847)
+ ..(2.419051,-0.39832)
+ ..controls (2.428024,-0.438794) and (2.386677,-0.471978)
+ ..(2.349105,-0.454458)\dpicstop
+\dpicdraw[line width=0.4bp](2.349105,-0.454458) circle (0.00109in)\dpicstop
+\dpicdraw (2.349105,-0.454458)
+ --(2.349105,-0.454458)\dpicstop
+\dpicdraw (2.461903,0.090809)
+ --(2.461903,-0.459142)\dpicstop
+\dpicdraw (2.524403,0.090809)
+ --(2.524403,-0.459142)\dpicstop
+\dpicdraw (2.637201,-0.330585)
+ --(2.637201,-0.3259)\dpicstop
+\dpicdraw[line width=0.4bp](2.637201,-0.3259) circle (0.00109in)\dpicstop
+\dpicdraw (2.637201,-0.3259)
+ ..controls (2.599629,-0.34342) and (2.558282,-0.310236)
+ ..(2.567255,-0.269763)
+ ..controls (2.576228,-0.22929) and (2.627724,-0.216688)
+ ..(2.654372,-0.248445)\dpicstop
+\dpicdraw[line width=0.4bp](2.654372,-0.248445) circle (0.00109in)\dpicstop
+\dpicdraw (2.654372,-0.248445)
+ ..controls (2.624366,-0.284205) and (2.56607,-0.262987)
+ ..(2.56607,-0.216306)
+ ..controls (2.56607,-0.169626) and (2.624366,-0.148407)
+ ..(2.654372,-0.184167)\dpicstop
+\dpicdraw[line width=0.4bp](2.654372,-0.184167) circle (0.00109in)\dpicstop
+\dpicdraw (2.654372,-0.184167)
+ ..controls (2.624366,-0.219926) and (2.56607,-0.198708)
+ ..(2.56607,-0.152027)
+ ..controls (2.56607,-0.105347) and (2.624366,-0.084129)
+ ..(2.654372,-0.119888)\dpicstop
+\dpicdraw[line width=0.4bp](2.654372,-0.119888) circle (0.00109in)\dpicstop
+\dpicdraw (2.654372,-0.119888)
+ ..controls (2.627724,-0.151645) and (2.576228,-0.139044)
+ ..(2.567255,-0.098571)
+ ..controls (2.558282,-0.058097) and (2.599629,-0.024913)
+ ..(2.637201,-0.042433)\dpicstop
+\dpicdraw[line width=0.4bp](2.637201,-0.042433) circle (0.00109in)\dpicstop
+\dpicdraw (2.637201,-0.042433)
+ --(2.637201,-0.037749)\dpicstop
+\dpicdraw[fill=black](2.380355,0.115809) circle (0.003937in)\dpicstop
+\dpicdraw[fill=black](2.605951,-0.355585) circle (0.003937in)\dpicstop
+\dpiclw=0.4bp
+\filldraw[line width=0bp](2.269784,0.110393)
+ --(2.33724,0.093243)
+ --(2.290364,0.144693) --cycle\dpicstop
+\dpicdraw (2.320662,0.103191)
+ --(2.240971,0.151005)\dpicstop
+\draw (2.240971,0.151005) node[left=-2bp]{\sl P1};
+\filldraw[line width=0bp](2.290364,-0.513026)
+ --(2.33724,-0.461577)
+ --(2.269784,-0.478727) --cycle\dpicstop
+\dpicdraw (2.320662,-0.471524)
+ --(2.240971,-0.519339)\dpicstop
+\draw (2.240971,-0.519339) node[left=-2bp]{\sl P2};
+\filldraw[line width=0bp](2.268602,-0.204167)
+ --(2.335268,-0.184167)
+ --(2.268602,-0.164167) --cycle\dpicstop
+\dpicdraw (2.315934,-0.184167)
+ --(2.242942,-0.184167)\dpicstop
+\draw (2.242942,-0.184167) node[left=-2bp]{\sl TP};
+\filldraw[line width=0bp](2.695942,0.02082)
+ --(2.649066,-0.030629)
+ --(2.716522,-0.01348) --cycle\dpicstop
+\dpicdraw (2.665644,-0.020682)
+ --(2.745335,0.027132)\dpicstop
+\draw (2.745335,0.027132) node[right=-2bp]{\sl S1};
+\filldraw[line width=0bp](2.716522,-0.354854)
+ --(2.649066,-0.337704)
+ --(2.695942,-0.389153) --cycle\dpicstop
+\dpicdraw (2.665644,-0.347651)
+ --(2.745335,-0.395466)\dpicstop
+\draw (2.745335,-0.395466) node[right=-2bp]{\sl S2};
+\filldraw[line width=0bp](2.717704,-0.164167)
+ --(2.651038,-0.184167)
+ --(2.717704,-0.204167) --cycle\dpicstop
+\dpicdraw (2.670371,-0.184167)
+ --(2.743364,-0.184167)\dpicstop
+\draw (2.743364,-0.184167) node[right=-2bp]{\sl TS};
+\draw (2.493153,-0.669142) node{\tt ...(,,8,WD12,4)};
+\dpiclw=0.8bp
+\dpicdraw (3.682139,0.103358)
+ --(3.682139,0.072108)\dpicstop
+\dpicdraw[line width=0.4bp](3.682139,0.072108) circle (0.00109in)\dpicstop
+\dpicdraw (3.682139,0.072108)
+ ..controls (3.716514,0.072108) and (3.744639,0.057483)
+ ..(3.744639,0.039608)
+ ..controls (3.744639,0.021733) and (3.724952,0.007108)
+ ..(3.700889,0.007108)
+ ..controls (3.676827,0.007108) and (3.657139,0.013858)
+ ..(3.657139,0.022108)
+ ..controls (3.657139,0.030358) and (3.676827,0.037108)
+ ..(3.700889,0.037108)
+ ..controls (3.724952,0.037108) and (3.744639,0.019108)
+ ..(3.744639,-0.002892)
+ ..controls (3.744639,-0.024892) and (3.724952,-0.042892)
+ ..(3.700889,-0.042892)
+ ..controls (3.676827,-0.042892) and (3.657139,-0.036142)
+ ..(3.657139,-0.027892)
+ ..controls (3.657139,-0.019642) and (3.676827,-0.012892)
+ ..(3.700889,-0.012892)
+ ..controls (3.724952,-0.012892) and (3.744639,-0.030892)
+ ..(3.744639,-0.052892)
+ ..controls (3.744639,-0.074892) and (3.724952,-0.092892)
+ ..(3.700889,-0.092892)
+ ..controls (3.676827,-0.092892) and (3.657139,-0.086142)
+ ..(3.657139,-0.077892)
+ ..controls (3.657139,-0.069642) and (3.676827,-0.062892)
+ ..(3.700889,-0.062892)
+ ..controls (3.724952,-0.062892) and (3.744639,-0.080892)
+ ..(3.744639,-0.102892)
+ ..controls (3.744639,-0.124892) and (3.724952,-0.142892)
+ ..(3.700889,-0.142892)
+ ..controls (3.676827,-0.142892) and (3.657139,-0.136142)
+ ..(3.657139,-0.127892)
+ ..controls (3.657139,-0.119642) and (3.676827,-0.112892)
+ ..(3.700889,-0.112892)
+ ..controls (3.724952,-0.112892) and (3.744639,-0.130892)
+ ..(3.744639,-0.152892)
+ ..controls (3.744639,-0.174892) and (3.724952,-0.192892)
+ ..(3.700889,-0.192892)
+ ..controls (3.676827,-0.192892) and (3.657139,-0.186142)
+ ..(3.657139,-0.177892)
+ ..controls (3.657139,-0.169642) and (3.676827,-0.162892)
+ ..(3.700889,-0.162892)
+ ..controls (3.724952,-0.162892) and (3.744639,-0.180892)
+ ..(3.744639,-0.202892)
+ ..controls (3.744639,-0.224892) and (3.724952,-0.242892)
+ ..(3.700889,-0.242892)
+ ..controls (3.676827,-0.242892) and (3.657139,-0.236142)
+ ..(3.657139,-0.227892)
+ ..controls (3.657139,-0.219642) and (3.676827,-0.212892)
+ ..(3.700889,-0.212892)
+ ..controls (3.724952,-0.212892) and (3.744639,-0.230892)
+ ..(3.744639,-0.252892)
+ ..controls (3.744639,-0.274892) and (3.724952,-0.292892)
+ ..(3.700889,-0.292892)
+ ..controls (3.676827,-0.292892) and (3.657139,-0.286142)
+ ..(3.657139,-0.277892)
+ ..controls (3.657139,-0.269642) and (3.676827,-0.262892)
+ ..(3.700889,-0.262892)
+ ..controls (3.724952,-0.262892) and (3.744639,-0.280892)
+ ..(3.744639,-0.302892)
+ ..controls (3.744639,-0.324892) and (3.724952,-0.342892)
+ ..(3.700889,-0.342892)
+ ..controls (3.676827,-0.342892) and (3.657139,-0.336142)
+ ..(3.657139,-0.327892)
+ ..controls (3.657139,-0.319642) and (3.676827,-0.312892)
+ ..(3.700889,-0.312892)
+ ..controls (3.724952,-0.312892) and (3.744639,-0.330892)
+ ..(3.744639,-0.352892)
+ ..controls (3.744639,-0.374892) and (3.724952,-0.392892)
+ ..(3.700889,-0.392892)
+ ..controls (3.676827,-0.392892) and (3.657139,-0.386142)
+ ..(3.657139,-0.377892)
+ ..controls (3.657139,-0.369642) and (3.676827,-0.362892)
+ ..(3.700889,-0.362892)
+ ..controls (3.724952,-0.362892) and (3.744639,-0.377517)
+ ..(3.744639,-0.395392)
+ ..controls (3.744639,-0.413267) and (3.716514,-0.427892)
+ ..(3.682139,-0.427892)\dpicstop
+\dpicdraw[line width=0.4bp](3.682139,-0.427892) circle (0.00109in)\dpicstop
+\dpicdraw (3.682139,-0.427892)
+ --(3.682139,-0.459142)\dpicstop
+\dpicdraw (3.869639,-0.459142)
+ --(3.869639,-0.302892)\dpicstop
+\dpicdraw[line width=0.4bp](3.869639,-0.302892) circle (0.00109in)\dpicstop
+\dpicdraw (3.869639,-0.302892)
+ ..controls (3.835264,-0.302892) and (3.807139,-0.288267)
+ ..(3.807139,-0.270392)
+ ..controls (3.807139,-0.252517) and (3.826827,-0.237892)
+ ..(3.850889,-0.237892)
+ ..controls (3.874952,-0.237892) and (3.894639,-0.244642)
+ ..(3.894639,-0.252892)
+ ..controls (3.894639,-0.261142) and (3.874952,-0.267892)
+ ..(3.850889,-0.267892)
+ ..controls (3.826827,-0.267892) and (3.807139,-0.249892)
+ ..(3.807139,-0.227892)
+ ..controls (3.807139,-0.205892) and (3.826827,-0.187892)
+ ..(3.850889,-0.187892)
+ ..controls (3.874952,-0.187892) and (3.894639,-0.194642)
+ ..(3.894639,-0.202892)
+ ..controls (3.894639,-0.211142) and (3.874952,-0.217892)
+ ..(3.850889,-0.217892)
+ ..controls (3.826827,-0.217892) and (3.807139,-0.199892)
+ ..(3.807139,-0.177892)
+ ..controls (3.807139,-0.155892) and (3.826827,-0.137892)
+ ..(3.850889,-0.137892)
+ ..controls (3.874952,-0.137892) and (3.894639,-0.144642)
+ ..(3.894639,-0.152892)
+ ..controls (3.894639,-0.161142) and (3.874952,-0.167892)
+ ..(3.850889,-0.167892)
+ ..controls (3.826827,-0.167892) and (3.807139,-0.149892)
+ ..(3.807139,-0.127892)
+ ..controls (3.807139,-0.105892) and (3.826827,-0.087892)
+ ..(3.850889,-0.087892)
+ ..controls (3.874952,-0.087892) and (3.894639,-0.094642)
+ ..(3.894639,-0.102892)
+ ..controls (3.894639,-0.111142) and (3.874952,-0.117892)
+ ..(3.850889,-0.117892)
+ ..controls (3.826827,-0.117892) and (3.807139,-0.103267)
+ ..(3.807139,-0.085392)
+ ..controls (3.807139,-0.067517) and (3.835264,-0.052892)
+ ..(3.869639,-0.052892)\dpicstop
+\dpicdraw[line width=0.4bp](3.869639,-0.052892) circle (0.00109in)\dpicstop
+\dpicdraw (3.869639,-0.052892)
+ --(3.869639,0.103358)\dpicstop
+\dpiclw=0.4bp
+\filldraw[line width=0bp](3.602818,0.127627)
+ --(3.670274,0.110477)
+ --(3.623398,0.161926) --cycle\dpicstop
+\dpicdraw (3.653695,0.120424)
+ --(3.574004,0.168239)\dpicstop
+\draw (3.574004,0.168239) node[left=-2bp]{\sl P1};
+\filldraw[line width=0bp](3.623398,-0.517711)
+ --(3.670274,-0.466261)
+ --(3.602818,-0.483411) --cycle\dpicstop
+\dpicdraw (3.653695,-0.476209)
+ --(3.574004,-0.524023)\dpicstop
+\draw (3.574004,-0.524023) node[left=-2bp]{\sl P2};
+\filldraw[line width=0bp](3.601636,-0.197892)
+ --(3.668302,-0.177892)
+ --(3.601636,-0.157892) --cycle\dpicstop
+\dpicdraw (3.648968,-0.177892)
+ --(3.575976,-0.177892)\dpicstop
+\draw (3.575976,-0.177892) node[left=-2bp]{\sl TP};
+\filldraw[line width=0bp](3.928381,0.161926)
+ --(3.881504,0.110477)
+ --(3.94896,0.127627) --cycle\dpicstop
+\dpicdraw (3.898083,0.120424)
+ --(3.977774,0.168239)\dpicstop
+\draw (3.977774,0.168239) node[right=-2bp]{\sl S1};
+\filldraw[line width=0bp](3.94896,-0.483411)
+ --(3.881504,-0.466261)
+ --(3.928381,-0.517711) --cycle\dpicstop
+\dpicdraw (3.898083,-0.476209)
+ --(3.977774,-0.524023)\dpicstop
+\draw (3.977774,-0.524023) node[right=-2bp]{\sl S2};
+\filldraw[line width=0bp](3.950143,-0.157892)
+ --(3.883476,-0.177892)
+ --(3.950143,-0.197892) --cycle\dpicstop
+\dpicdraw (3.90281,-0.177892)
+ --(3.975802,-0.177892)\dpicstop
+\draw (3.975802,-0.177892) node[right=-2bp]{\sl TS};
+\draw (3.775889,-0.759142) node{\tt ...(,,9,AL)};
+\dpiclw=0.8bp
+\dpicdraw (5.127971,-0.454458)
+ --(5.127971,-0.454458)\dpicstop
+\dpicdraw[line width=0.4bp](5.127971,-0.454458) circle (0.00109in)\dpicstop
+\dpicdraw (5.127971,-0.454458)
+ ..controls (5.090399,-0.471978) and (5.049052,-0.438794)
+ ..(5.058025,-0.39832)
+ ..controls (5.066998,-0.357847) and (5.118495,-0.345246)
+ ..(5.145142,-0.377003)\dpicstop
+\dpicdraw[line width=0.4bp](5.145142,-0.377003) circle (0.00109in)\dpicstop
+\dpicdraw (5.145142,-0.377003)
+ ..controls (5.115136,-0.412762) and (5.05684,-0.391544)
+ ..(5.05684,-0.344864)
+ ..controls (5.05684,-0.298183) and (5.115136,-0.276965)
+ ..(5.145142,-0.312724)\dpicstop
+\dpicdraw[line width=0.4bp](5.145142,-0.312724) circle (0.00109in)\dpicstop
+\dpicdraw (5.145142,-0.312724)
+ ..controls (5.115136,-0.348484) and (5.05684,-0.327265)
+ ..(5.05684,-0.280585)
+ ..controls (5.05684,-0.233904) and (5.115136,-0.212686)
+ ..(5.145142,-0.248445)\dpicstop
+\dpicdraw[line width=0.4bp](5.145142,-0.248445) circle (0.00109in)\dpicstop
+\dpicdraw (5.145142,-0.248445)
+ ..controls (5.115136,-0.284205) and (5.05684,-0.262987)
+ ..(5.05684,-0.216306)
+ ..controls (5.05684,-0.169626) and (5.115136,-0.148407)
+ ..(5.145142,-0.184167)\dpicstop
+\dpicdraw[line width=0.4bp](5.145142,-0.184167) circle (0.00109in)\dpicstop
+\dpicdraw (5.145142,-0.184167)
+ ..controls (5.115136,-0.219926) and (5.05684,-0.198708)
+ ..(5.05684,-0.152027)
+ ..controls (5.05684,-0.105347) and (5.115136,-0.084129)
+ ..(5.145142,-0.119888)\dpicstop
+\dpicdraw[line width=0.4bp](5.145142,-0.119888) circle (0.00109in)\dpicstop
+\dpicdraw (5.145142,-0.119888)
+ ..controls (5.115136,-0.155647) and (5.05684,-0.134429)
+ ..(5.05684,-0.087749)
+ ..controls (5.05684,-0.041068) and (5.115136,-0.01985)
+ ..(5.145142,-0.055609)\dpicstop
+\dpicdraw[line width=0.4bp](5.145142,-0.055609) circle (0.00109in)\dpicstop
+\dpicdraw (5.145142,-0.055609)
+ ..controls (5.115136,-0.091368) and (5.05684,-0.07015)
+ ..(5.05684,-0.02347)
+ ..controls (5.05684,0.023211) and (5.115136,0.044429)
+ ..(5.145142,0.00867)\dpicstop
+\dpicdraw[line width=0.4bp](5.145142,0.00867) circle (0.00109in)\dpicstop
+\dpicdraw (5.145142,0.00867)
+ ..controls (5.118495,-0.023088) and (5.066998,-0.010486)
+ ..(5.058025,0.029987)
+ ..controls (5.049052,0.07046) and (5.090399,0.103644)
+ ..(5.127971,0.086124)\dpicstop
+\dpicdraw[line width=0.4bp](5.127971,0.086124) circle (0.00109in)\dpicstop
+\dpicdraw (5.127971,0.086124)
+ --(5.127971,0.086124)\dpicstop
+\dpicdraw (4.914578,0.086124)
+ --(4.914578,-0.042433)\dpicstop
+\dpicdraw[line width=0.4bp](4.914578,-0.042433) circle (0.00109in)\dpicstop
+\dpicdraw (4.914578,-0.042433)
+ ..controls (4.95215,-0.024913) and (4.993496,-0.058097)
+ ..(4.984524,-0.098571)
+ ..controls (4.975551,-0.139044) and (4.924054,-0.151645)
+ ..(4.897407,-0.119888)\dpicstop
+\dpicdraw[line width=0.4bp](4.897407,-0.119888) circle (0.00109in)\dpicstop
+\dpicdraw (4.897407,-0.119888)
+ ..controls (4.927412,-0.084129) and (4.985709,-0.105347)
+ ..(4.985709,-0.152027)
+ ..controls (4.985709,-0.198708) and (4.927412,-0.219926)
+ ..(4.897407,-0.184167)\dpicstop
+\dpicdraw[line width=0.4bp](4.897407,-0.184167) circle (0.00109in)\dpicstop
+\dpicdraw (4.897407,-0.184167)
+ ..controls (4.927412,-0.148407) and (4.985709,-0.169626)
+ ..(4.985709,-0.216306)
+ ..controls (4.985709,-0.262987) and (4.927412,-0.284205)
+ ..(4.897407,-0.248445)\dpicstop
+\dpicdraw[line width=0.4bp](4.897407,-0.248445) circle (0.00109in)\dpicstop
+\dpicdraw (4.897407,-0.248445)
+ ..controls (4.924054,-0.216688) and (4.975551,-0.22929)
+ ..(4.984524,-0.269763)
+ ..controls (4.993496,-0.310236) and (4.95215,-0.34342)
+ ..(4.914578,-0.3259)\dpicstop
+\dpicdraw[line width=0.4bp](4.914578,-0.3259) circle (0.00109in)\dpicstop
+\dpicdraw (4.914578,-0.3259)
+ --(4.914578,-0.454458)\dpicstop
+\dpiclw=0.4bp
+\filldraw[line width=0bp](5.186712,0.144693)
+ --(5.139836,0.093243)
+ --(5.207292,0.110393) --cycle\dpicstop
+\dpicdraw (5.156415,0.103191)
+ --(5.236106,0.151005)\dpicstop
+\draw (5.236106,0.151005) node[right=-2bp]{\sl P1};
+\filldraw[line width=0bp](5.207292,-0.478727)
+ --(5.139836,-0.461577)
+ --(5.186712,-0.513026) --cycle\dpicstop
+\dpicdraw (5.156415,-0.471524)
+ --(5.236106,-0.519339)\dpicstop
+\draw (5.236106,-0.519339) node[right=-2bp]{\sl P2};
+\filldraw[line width=0bp](5.208474,-0.164167)
+ --(5.141808,-0.184167)
+ --(5.208474,-0.204167) --cycle\dpicstop
+\dpicdraw (5.161142,-0.184167)
+ --(5.234134,-0.184167)\dpicstop
+\draw (5.234134,-0.184167) node[right=-2bp]{\sl TP};
+\filldraw[line width=0bp](4.835257,0.110393)
+ --(4.902713,0.093243)
+ --(4.855837,0.144693) --cycle\dpicstop
+\dpicdraw (4.886134,0.103191)
+ --(4.806443,0.151005)\dpicstop
+\draw (4.806443,0.151005) node[left=-2bp]{\sl S1};
+\filldraw[line width=0bp](4.855837,-0.513026)
+ --(4.902713,-0.461577)
+ --(4.835257,-0.478727) --cycle\dpicstop
+\dpicdraw (4.886134,-0.471524)
+ --(4.806443,-0.519339)\dpicstop
+\draw (4.806443,-0.519339) node[left=-2bp]{\sl S2};
+\filldraw[line width=0bp](4.834074,-0.204167)
+ --(4.900741,-0.184167)
+ --(4.834074,-0.164167) --cycle\dpicstop
+\dpicdraw (4.881407,-0.184167)
+ --(4.808415,-0.184167)\dpicstop
+\draw (4.808415,-0.184167) node[left=-2bp]{\sl TS};
+\draw (5.021274,-0.759142) node{\tt ...(,R,8,AW)};
+\dpiclw=0.8bp
+\end{tikzpicture}
+\vspace*{-0.5\baselineskip}
diff --git a/graphics/circuit_macros/doc/Xform.m4 b/graphics/circuit_macros/doc/XformMan.m4
index 697d87fafa..697d87fafa 100644
--- a/graphics/circuit_macros/doc/Xform.m4
+++ b/graphics/circuit_macros/doc/XformMan.m4
diff --git a/graphics/circuit_macros/doc/bistable.m4 b/graphics/circuit_macros/doc/bistableMan.m4
index d158e10a04..d158e10a04 100644
--- a/graphics/circuit_macros/doc/bistable.m4
+++ b/graphics/circuit_macros/doc/bistableMan.m4
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
diff --git a/graphics/circuit_macros/doc/defines.tex b/graphics/circuit_macros/doc/defines.tex
index 8e21bba0ec..cb3a1a5dae 100644
--- a/graphics/circuit_macros/doc/defines.tex
+++ b/graphics/circuit_macros/doc/defines.tex
@@ -34,6 +34,13 @@
\macrodef{abs\_}{abs_}{({\sl number})}
{gen}
{absolute value function}
+\macrodef{ACsymbol}{ACsymbol}{(at {\sl position, len, ht,}
+ [A]U|D|L|R|{\sl degrees}) }
+ {cct}
+ {draw an AC symbol ( 1-cycle sine wave); If arg 4 contains A, two arcs
+ are drawn. The current drawing direction is default, otherwise Up, Down,
+ Left, Right, or at {\sl degrees} slant; e.g.,
+ {\tt ebox; $\lbrace$ ACsymbol(at last [],{,}dimen\_/8) $\rbrace$} }
\macrodef{adc}{adc}{({\sl width,height,nIn,nN,nOut,nS})}
{cct}
{ADC with defined width, height, and number of inputs {\tt In$i$},
@@ -630,6 +637,7 @@ B|CR|D|G|L|LE[R]|P[R]|S|Sh|T|V|v|w|Z|chars,%
MMR = momentary contact on make and release,
O = hand operation button,
P = pushbutton,
+ Pr{\tt [T|M]} = proximity (touch-sensitive or magnetically controlled),
Th = thermal control linkage,
Tr = tripping,
Y = pull switch,
@@ -769,7 +777,7 @@ B|CR|D|G|L|LE[R]|P[R]|S|Sh|T|V|v|w|Z|chars,%
\macrodef{fuse}{fuse}{({\sl linespec, type, wid, ht})}
{cct}
{fuse symbol, type$=$
- {\tt A|B|C|D|S|HB|HC} or {\tt dA=D}\seesect{Twoterminal:}}
+ {\tt A|B|C|D|S|HB|HC|SB} or {\tt dA=D}\seesect{Twoterminal:}}
\macrodef{g\_}{g_}{}
{gen}
{green color value}
@@ -801,12 +809,14 @@ B|CR|D|G|L|LE[R]|P[R]|S|Sh|T|V|v|w|Z|chars,%
\macrodef{grid\_}{grid_}{({\sl x},{\sl y})}
{log}
{absolute grid location}
-\macrodef{ground}{ground}{(at {\sl location}, T, N|F|S|L|P|E, U|D|L|R|{\sl
+\macrodef{ground}{ground}{(at {\sl location}, T, N|F|S|L|P[A]|E, U|D|L|R|{\sl
degrees})}
{cct}
{ ground, without stem for nonblank 2nd arg;
{\tt N}=normal, {\tt F}=frame, {\tt S}=signal, {\tt L}=low-noise,
- {\tt P}=protective, {\tt E}=European; up, down, left, right, or angle
+ {\tt P}=protective,
+ {\tt PA}=protective alternate,
+ {\tt E}=European; up, down, left, right, or angle
from horizontal (default -90)
\seesect{Composite:}}
\macrodef{gshade}{gshade}{({\sl gray value},A,B,...,Z,A,B)}
@@ -821,9 +831,13 @@ B|CR|D|G|L|LE[R]|P[R]|S|Sh|T|V|v|w|Z|chars,%
\macrodef{H\_ht}{H_ht}{}
{log}
{hysteresis symbol dimension in {\tt L\_unit}s}
-\macrodef{Header}{Header}{(1|2,{\sl rows,wid,ht,type})}
+\macrodef{Header}{Header}{(1|2,{\sl rows,wid,ht,box attributes})}
{log}
- {Header block with 1 or 2 columns and square Pin 1
+ {Header block with 1 or 2 columns and square Pin 1:
+ arg1 = number of columns;
+ arg2 = pins per column;
+ arg3,4 = custom wid, ht;
+ arg5 = e.g., {\tt fill\_(0.9)}
\seesect{Composite:}}
\macrodef{HeaderPin}{HeaderPin}{({\sl location, type, Picname},%
n|e|s|w,{\sl length})}
@@ -981,13 +995,19 @@ n|e|s|w,{\sl length})}
\macrodef{lg\_bartxt}{lg_bartxt}{}
{log}
{draws an overline over logic-pin text (except for xfig)}
-\macrodef{lg\_pin}{lg_pin}{({\sl location, logical name, pin label},
+\macrodef{lg\_pin}{lg_pin}{({\sl location, label, Picname},
n|e|s|w[L|M|I|O][N][E], {\sl pinno, optlen})}
{log}
- {comprehensive logic pin; {\tt n|e|s|w}=direction,
- {\tt L}=active low out, {\tt M}=active low in,
- {\tt I}=inward arrow, {\tt O}=outward arrow,
- {\tt N}=negated, {\tt E}=edge trigger}
+ {comprehensive logic pin;
+ {\sl label}= text (indicating logical pin function, usually),
+ {\sl Picname}= pic label for referring to the pin (line),
+ {\tt n|e|s|w}=orientation (north, south, east, west),
+ {\tt L}=active low out,
+ {\tt M}=active low in,
+ {\tt I}=inward arrow,
+ {\tt O}=outward arrow,
+ {\tt N}=negated,
+ {\tt E}=edge trigger}
\macrodef{lg\_pintxt}{lg_pintxt}{}
{log}
{reduced-size text for logic pins}
@@ -1030,7 +1050,8 @@ n|e|s|w,{\sl length})}
value2, $\ldots$})}
{gen}
{Repeat {\sl actions} with {\sl variable} set successively to
- {\sl value1, value2, $\ldots$}, setting macro {\tt m4Lx} to 1, 2, $\ldots$}
+ {\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}}
@@ -1077,9 +1098,11 @@ n|e|s|w,{\sl length})}
\macrodef{memristor}{memristor}{({\sl linespec, wid, ht})}
{cct}
{memristor element\seesect{Twoterminal:}}
-\macrodef{microphone}{microphone}{( U|D|L|R|{\sl degrees, size})}
+\macrodef{microphone}{microphone}{( A|U|D|L|R|{\sl degrees, size})}
{cct}
- {microphone, {\sl In1} to {\sl In3} defined
+ {microphone; if arg1 = A: upright mic, otherwise arg1 sets direction
+ of standard microphone with
+ {\sl In1} to {\sl In3} defined
\seesect{Composite:}}
\macrodef{Min}{Min}{({\sl arg, arg, $\ldots$})}
{gen}
@@ -1114,6 +1137,7 @@ n|e|s|w,{\sl length})}
{\tt L:} G pin to channel (obsolete);
{\tt [u][d]M:} G pin to channel; u: at drain end; d: at source end
{\tt [u][d]M{\sl n}:} multiple gates G0 to G{\sl n}
+ {\tt Py:} parallel diode;
{\tt Pz:} parallel zener diode;
{\tt Q:} connect B pin to S pin;
{\tt R:} thick channel;
@@ -1278,6 +1302,9 @@ nw,nn,ne,ns,pin lgth,style, other commands})}
%\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}
@@ -1659,15 +1686,22 @@ nw,nn,ne,ns,pin lgth,style, other commands})}
e.g., to draw a dashed sine curve, amplitude {\sl a}, of {\sl n} cycles
of length {\sl x} from {\sl A},
{\tt sinusoid(a,twopi\_*n/x,-pi\_/2,0,x,dashed) with .Start at A}}
-\macrodef{source}{source}{(\linespec,V|v|I|i|AC|B|F|G|H|Q|L|N|P|S|T|X|U|{\sl
- other},{\sl diameter},R)}
- {cct}
- {source, blank or voltage (2 types), current (2 types), AC,
- or type F, G, Q, B, L, N, X or labelled,
- H = step (Heaviside),
- P = pulse, U = square, R = ramp,
- S = sinusoid, T = triangle; other = custom interior label or waveform,
- R = reversed polarity \seesect{Twoterminal:}}
+\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 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
+ \seesect{Twoterminal:}}
\macrodef{sourcerad\_}{sourcerad_}{}
{cct}
{default source radius}
@@ -1881,11 +1915,14 @@ nw,nn,ne,ns,pin lgth,style, other commands})}
{gen}
{set current direction up \seesect{Placing:}}
\macrodef{variable}{variable}{(`{\sl element}',
- {\tt [A|P|L|[u]N][C|S]},{\sl angle},{\sl length})}
+ {\tt [A|P|L|[u]N|[u]NN][C|S]},{\sl angle},{\sl length})}
{cct}
{overlaid arrow or line to indicate variable 2-terminal element:
{\tt A}=arrow, {\tt P}=preset,
- {\tt L}=linear, {\tt N}=nonlinear, {\tt C}=continuous, {\tt S}=setpwise
+ {\tt L}=linear,
+ {\tt N}= symmetric nonlinear,
+ {\tt C}=continuous, {\tt S}=setpwise; {\tt u} changes the
+ nonlinearity direction
\seesect{Twoterminal:}}
\macrodef{Vcoords\_}{Vcoords_}{({\sl position})}
{gen}
diff --git a/graphics/circuit_macros/doc/fet.tex b/graphics/circuit_macros/doc/fet.tex
new file mode 100644
index 0000000000..7fbd593d5a
--- /dev/null
+++ b/graphics/circuit_macros/doc/fet.tex
@@ -0,0 +1,513 @@
+\begin{tikzpicture}[scale=2.54]
+% dpic version 2020.03.01 option -g for TikZ and PGF 1.01
+\ifx\dpiclw\undefined\newdimen\dpiclw\fi
+\global\def\dpicdraw{\draw[line width=\dpiclw]}
+\global\def\dpicstop{;}
+\dpiclw=0.8bp
+\dpiclw=0.8bp
+\dpicdraw (0,-0.175)
+ --(0.15,-0.175)
+ --(0.15,-0.16393)\dpicstop
+\dpicdraw (0.5,-0.175)
+ --(0.35,-0.175)
+ --(0.35,-0.16393)\dpicstop
+\dpicdraw (0.35,-0.175)
+ --(0.35,0)\dpicstop
+\dpicdraw (0.125,0)
+ --(0.375,0)\dpicstop
+\filldraw[line width=0bp](0.122222,0.083333)
+ --(0.15,0)
+ --(0.177778,0.083333) --cycle\dpicstop
+\dpicdraw (0.15,0.175)
+ --(0.15,0.017568)\dpicstop
+\dpicdraw (0.15,-0.175)
+ --(0.15,0)\dpicstop
+\dpicdraw (0.25,0) circle (0.07874in)\dpicstop
+\draw (0.875,-0.5) node{{\tt j\_fet(right\_ dimen\_,{,},E)}};
+\draw (0.15,0.175) node[above left=-2bp]{$G$};
+\draw (0,-0.175) node[left=-2bp]{$S$};
+\draw (0.5,-0.175) node[right=-2bp]{$D$};
+\dpicdraw (1.127778,-0.175)
+ --(1.127778,0)\dpicstop
+\dpicdraw (0.902778,0)
+ --(1.152778,0)\dpicstop
+\dpicdraw (0.927778,0)
+ --(0.927778,0.175)\dpicstop
+\filldraw[line width=0bp](0.955556,0.066667)
+ --(0.927778,0.15)
+ --(0.9,0.066667) --cycle\dpicstop
+\dpicdraw (0.927778,0.066667)
+ --(0.927778,0.132432)\dpicstop
+\dpicdraw (0.927778,-0.175)
+ --(0.927778,0)\dpicstop
+\draw (1.026389,-0.225) node[below=-2bp]{{\tt j\_fet(,{,}P,)}};
+\draw (0.927778,0.175) node[left=-2bp]{$G$};
+\draw (0.927778,-0.175) node[left=-2bp]{$S$};
+\draw (1.127778,-0.175) node[right=-2bp]{$D$};
+\dpicdraw (1.925,0.175)
+ --(1.925,0)\dpicstop
+\filldraw[line width=0bp](1.897222,0.129167)
+ --(1.925,0.045833)
+ --(1.952778,0.129167) --cycle\dpicstop
+\dpicdraw (1.925,0.129167)
+ --(1.925,0.063402)\dpicstop
+\dpicdraw (2.025,0.175)
+ --(2.025,0)\dpicstop
+\dpicdraw (1.8,0)
+ --(1.875,0)\dpicstop
+\dpicdraw (1.9,0)
+ --(1.95,0)\dpicstop
+\dpicdraw (1.975,0)
+ --(2.05,0)\dpicstop
+\dpicdraw (2.025,-0.05)
+ --(1.825,-0.05)
+ --(1.825,-0.175)\dpicstop
+\dpicdraw (1.925,0.16393)
+ --(1.925,0.175)
+ --(1.825,0.175)
+ --(1.825,0.16393)\dpicstop
+\dpicdraw (1.825,0.175)
+ --(1.825,0)\dpicstop
+\draw (1.925,-0.225) node[below=-2bp]{{\tt e\_fet(,R,{,})}};
+\draw (1.825,-0.175) node[left=-2bp]{$G$};
+\draw (1.825,0.175) node[left=-2bp]{$S$};
+\draw (2.025,0.175) node[right=-2bp]{$D$};
+\dpicdraw (1.925,-1.175)
+ --(1.925,-1)\dpicstop
+\filldraw[line width=0bp](1.897222,-1.045833)
+ --(1.925,-1.129167)
+ --(1.952778,-1.045833) --cycle\dpicstop
+\dpicdraw (1.925,-1.111598)
+ --(1.925,-1.045833)\dpicstop
+\dpicdraw (2.025,-1.175)
+ --(2.025,-1)\dpicstop
+\dpicdraw (1.8,-1)
+ --(1.875,-1)\dpicstop
+\dpicdraw (1.9,-1)
+ --(1.95,-1)\dpicstop
+\dpicdraw (1.975,-1)
+ --(2.05,-1)\dpicstop
+\dpicdraw (2.025,-0.95)
+ --(1.825,-0.95)
+ --(1.825,-0.825)\dpicstop
+\dpicdraw (1.925,-1.16393)
+ --(1.925,-1.175)
+ --(1.825,-1.175)
+ --(1.825,-1.16393)\dpicstop
+\dpicdraw (1.825,-1.175)
+ --(1.825,-1)\dpicstop
+\draw (2.025,-1.375) node[below=-2bp]{{\tt e\_fet(,{,}P)}};
+\dpicdraw (2.825,-0.175)
+ --(2.825,0)\dpicstop
+\filldraw[line width=0bp](2.852778,-0.129167)
+ --(2.825,-0.045833)
+ --(2.797222,-0.129167) --cycle\dpicstop
+\dpicdraw (2.825,-0.129167)
+ --(2.825,-0.063402)\dpicstop
+\dpicdraw (2.925,-0.175)
+ --(2.925,0)\dpicstop
+\dpicdraw (2.7,0)
+ --(2.95,0)\dpicstop
+\dpicdraw (2.925,0.05)
+ --(2.725,0.05)
+ --(2.725,0.175)\dpicstop
+\dpicdraw (2.825,-0.16393)
+ --(2.825,-0.175)
+ --(2.725,-0.175)
+ --(2.725,-0.16393)\dpicstop
+\dpicdraw (2.725,-0.175)
+ --(2.725,0)\dpicstop
+\draw (2.825,-0.225) node[below=-2bp]{{\tt d\_fet(,{,},)}};
+\dpicdraw (2.825,-1.175)
+ --(2.825,-1)\dpicstop
+\filldraw[line width=0bp](2.797222,-1.045833)
+ --(2.825,-1.129167)
+ --(2.852778,-1.045833) --cycle\dpicstop
+\dpicdraw (2.825,-1.111598)
+ --(2.825,-1.045833)\dpicstop
+\dpicdraw (2.925,-1.175)
+ --(2.925,-1)\dpicstop
+\dpicdraw (2.7,-1)
+ --(2.95,-1)\dpicstop
+\dpicdraw (2.925,-0.95)
+ --(2.725,-0.95)
+ --(2.725,-0.825)\dpicstop
+\dpicdraw (2.825,-1.16393)
+ --(2.825,-1.175)
+ --(2.725,-1.175)
+ --(2.725,-1.16393)\dpicstop
+\dpicdraw (2.725,-1.175)
+ --(2.725,-1)\dpicstop
+\draw (2.825,-1.225) node[below=-2bp]{{\tt d\_fet(,{,}P)}};
+\dpicdraw (3.827778,-0.1875)
+ --(3.827778,-0.0125)\dpicstop
+\dpicdraw (3.602778,-0.0125)
+ --(3.852778,-0.0125)\dpicstop
+\dpicdraw (3.627778,-0.1875)
+ --(3.627778,-0.0125)\dpicstop
+\filldraw[line width=0bp](3.6,-0.058333)
+ --(3.627778,-0.141667)
+ --(3.655556,-0.058333) --cycle\dpicstop
+\dpicdraw (3.627778,-0.124098)
+ --(3.627778,-0.058333)\dpicstop
+\dpicdraw (3.627778,0.0375)
+ --(3.827778,0.0375)\dpicstop
+\dpicdraw (3.727778,0.0375)
+ --(3.727778,0.1875)\dpicstop
+\draw (3.726389,-0.2375) node[below=-2bp]{{\tt e\_fet(,{,},S)}};
+\dpicdraw (3.827778,-1.1875)
+ --(3.827778,-1.0125)\dpicstop
+\dpicdraw (3.602778,-1.0125)
+ --(3.852778,-1.0125)\dpicstop
+\dpicdraw (3.627778,-1.1875)
+ --(3.627778,-1.0125)\dpicstop
+\filldraw[line width=0bp](3.655556,-1.141667)
+ --(3.627778,-1.058333)
+ --(3.6,-1.141667) --cycle\dpicstop
+\dpicdraw (3.627778,-1.141667)
+ --(3.627778,-1.075902)\dpicstop
+\dpicdraw (3.627778,-0.9625)
+ --(3.827778,-0.9625)\dpicstop
+\dpicdraw (3.727778,-0.9625)
+ --(3.727778,-0.8125)\dpicstop
+\draw (3.726389,-1.3875) node[below=-2bp]{{\tt e\_fet(,{,}P,S)}};
+\dpicdraw (4.727778,-0.1875)
+ --(4.727778,-0.0125)\dpicstop
+\dpicdraw (4.502778,-0.0125)
+ --(4.752778,-0.0125)\dpicstop
+\dpicdraw[line width=1.6bp](4.527778,-0.029104)
+ --(4.727778,-0.029104)\dpicstop
+\dpicdraw (4.527778,-0.1875)
+ --(4.527778,-0.0125)\dpicstop
+\filldraw[line width=0bp](4.5,-0.058333)
+ --(4.527778,-0.141667)
+ --(4.555556,-0.058333) --cycle\dpicstop
+\dpicdraw (4.527778,-0.124098)
+ --(4.527778,-0.058333)\dpicstop
+\dpicdraw (4.527778,0.0375)
+ --(4.727778,0.0375)\dpicstop
+\dpicdraw (4.627778,0.0375)
+ --(4.627778,0.1875)\dpicstop
+\draw (4.626389,-0.3875) node[below=-2bp]{{\tt d\_fet(,{,},S)}};
+\dpicdraw (4.727778,-1.1875)
+ --(4.727778,-1.0125)\dpicstop
+\dpicdraw (4.502778,-1.0125)
+ --(4.752778,-1.0125)\dpicstop
+\dpicdraw[line width=1.6bp](4.527778,-1.029104)
+ --(4.727778,-1.029104)\dpicstop
+\dpicdraw (4.527778,-1.1875)
+ --(4.527778,-1.0125)\dpicstop
+\filldraw[line width=0bp](4.555556,-1.141667)
+ --(4.527778,-1.058333)
+ --(4.5,-1.141667) --cycle\dpicstop
+\dpicdraw (4.527778,-1.141667)
+ --(4.527778,-1.075902)\dpicstop
+\dpicdraw (4.527778,-0.9625)
+ --(4.727778,-0.9625)\dpicstop
+\dpicdraw (4.627778,-0.9625)
+ --(4.627778,-0.8125)\dpicstop
+\draw (4.626389,-1.2375) node[below=-2bp]{{\tt d\_fet(,{,}P,S)}};
+\dpicdraw (5.6,-0.1625)
+ --(5.6,-0.0375)\dpicstop
+\dpicdraw (5.4,-0.0375)
+ --(5.6,-0.0375)\dpicstop
+\dpicdraw (5.4,-0.1625)
+ --(5.4,-0.0375)\dpicstop
+\dpicdraw (5.4,0.0125)
+ --(5.6,0.0125)\dpicstop
+\dpicdraw (5.5,0.0125)
+ --(5.5,0.1625)\dpicstop
+\draw (5.5,-0.2125) node[below=-2bp]{{\tt c\_fet(,{,},)}};
+\dpicdraw (5.6,-1.1625)
+ --(5.6,-1.0375)\dpicstop
+\dpicdraw (5.4,-1.0375)
+ --(5.6,-1.0375)\dpicstop
+\dpicdraw (5.4,-1.1625)
+ --(5.4,-1.0375)\dpicstop
+\dpicdraw (5.4,-0.9875)
+ --(5.6,-0.9875)\dpicstop
+\dpicdraw (5.5,-0.954167) circle (0.013123in)\dpicstop
+\dpicdraw (5.5,-0.920833)
+ --(5.5,-0.8375)\dpicstop
+\draw (5.5,-1.3625) node[below=-2bp]{{\tt c\_fet(,{,}P)}};
+\dpicdraw (0.473333,-2.127778)
+ --(0.473333,-1.917778)\dpicstop
+\dpicdraw (0.203333,-1.917778)
+ --(0.503333,-1.917778)\dpicstop
+\filldraw[line width=0bp](0.2,-1.817778)
+ --(0.233333,-1.917778)
+ --(0.266667,-1.817778) --cycle\dpicstop
+\dpicdraw (0.233333,-1.707778)
+ --(0.233333,-1.90021)\dpicstop
+\dpicdraw (0.233333,-2.127778)
+ --(0.233333,-1.917778)\dpicstop
+\draw (0.625,-2.227778) node{\tt mosfet(,{,}dGSDF,)};
+\dpiclw=0.4bp
+\filldraw[line width=0bp](0.176412,-1.797833)
+ --(0.233333,-1.757778)
+ --(0.163763,-1.759886) --cycle\dpicstop
+\dpicdraw (0.214992,-1.763892)
+ --(0.083333,-1.807778)\dpicstop
+\draw (0.083333,-1.807778) node[left=-2bp]{\tt dG};
+\filldraw[line width=0bp](0.296412,-1.957833)
+ --(0.353333,-1.917778)
+ --(0.283763,-1.919886) --cycle\dpicstop
+\dpicdraw (0.334992,-1.923892)
+ --(0.053333,-2.017778)\dpicstop
+\draw (0.053333,-2.017778) node[left=-2bp]{\tt F};
+\filldraw[line width=0bp](0.176412,-2.117833)
+ --(0.233333,-2.077778)
+ --(0.163763,-2.079886) --cycle\dpicstop
+\dpicdraw (0.214992,-2.083892)
+ --(0.083333,-2.127778)\dpicstop
+\draw (0.083333,-2.127778) node[left=-2bp]{\tt S};
+\filldraw[line width=0bp](0.542903,-2.079886)
+ --(0.473333,-2.077778)
+ --(0.530254,-2.117833) --cycle\dpicstop
+\dpicdraw (0.491675,-2.083892)
+ --(0.623333,-2.127778)\dpicstop
+\draw (0.623333,-2.127778) node[right=-2bp]{\tt D};
+\dpiclw=0.8bp
+\dpicdraw (1.523333,-2.142778)
+ --(1.523333,-1.932778)\dpicstop
+\dpicdraw (1.253333,-1.932778)
+ --(1.553333,-1.932778)\dpicstop
+\dpicdraw (1.403333,-1.932778)
+ --(1.403333,-1.692778)\dpicstop
+\filldraw[line width=0bp](1.436667,-1.852778)
+ --(1.403333,-1.752778)
+ --(1.37,-1.852778) --cycle\dpicstop
+\dpicdraw (1.403333,-1.852778)
+ --(1.403333,-1.770346)\dpicstop
+\dpicdraw (1.283333,-2.142778)
+ --(1.283333,-1.932778)\dpicstop
+\draw (1.403333,-2.292778) node[below=-2bp]{\tt $\ldots$(,{,}uHSDF,)};
+\dpiclw=0.4bp
+\filldraw[line width=0bp](1.346412,-1.782833)
+ --(1.403333,-1.742778)
+ --(1.333763,-1.744886) --cycle\dpicstop
+\dpicdraw (1.384992,-1.748892)
+ --(1.253333,-1.792778)\dpicstop
+\draw (1.253333,-1.792778) node[left=-2bp]{\tt uH};
+\dpiclw=0.8bp
+\dpicdraw (2.453333,-2.127778)
+ --(2.453333,-1.917778)\dpicstop
+\filldraw[line width=0bp](2.486667,-2.072778)
+ --(2.453333,-1.972778)
+ --(2.42,-2.072778) --cycle\dpicstop
+\dpicdraw (2.453333,-2.072778)
+ --(2.453333,-1.990346)\dpicstop
+\dpicdraw (2.573333,-2.127778)
+ --(2.573333,-1.917778)\dpicstop
+\dpicdraw (2.303333,-1.917778)
+ --(2.393333,-1.917778)\dpicstop
+\dpicdraw (2.423333,-1.917778)
+ --(2.483333,-1.917778)\dpicstop
+\dpicdraw (2.513333,-1.917778)
+ --(2.603333,-1.917778)\dpicstop
+\dpicdraw (2.573333,-1.857778)
+ --(2.333333,-1.857778)
+ --(2.333333,-1.707778)\dpicstop
+\dpicdraw (2.453333,-2.116708)
+ --(2.453333,-2.127778)
+ --(2.333333,-2.127778)
+ --(2.333333,-2.116708)\dpicstop
+\dpicdraw (2.333333,-2.127778)
+ --(2.333333,-1.917778)\dpicstop
+\draw (2.453333,-2.177778) node[below=-2bp]{\tt $\ldots$(,{,}dMEDSQuB,)};
+\dpiclw=0.4bp
+\filldraw[line width=0bp](2.276412,-1.797833)
+ --(2.333333,-1.757778)
+ --(2.263763,-1.759886) --cycle\dpicstop
+\dpicdraw (2.314992,-1.763892)
+ --(2.183333,-1.807778)\dpicstop
+\draw (2.183333,-1.807778) node[left=-2bp]{\tt dM};
+\filldraw[line width=0bp](2.370115,-1.962636)
+ --(2.423333,-1.917778)
+ --(2.354211,-1.925934) --cycle\dpicstop
+\dpicdraw (2.405593,-1.925465)
+ --(2.123333,-2.047778)\dpicstop
+\draw (2.123333,-2.047778) node[left=-2bp]{\tt E};
+\filldraw[line width=0bp](2.342649,-2.175481)
+ --(2.393333,-2.127778)
+ --(2.324761,-2.139703) --cycle\dpicstop
+\dpicdraw (2.376041,-2.136424)
+ --(2.293333,-2.177778)\dpicstop
+\draw (2.293333,-2.177778) node[left=-2bp]{\tt Q};
+\filldraw[line width=0bp](2.522903,-1.954886)
+ --(2.453333,-1.952778)
+ --(2.510254,-1.992833) --cycle\dpicstop
+\dpicdraw (2.471675,-1.958892)
+ --(2.693333,-2.032778)\dpicstop
+\draw (2.693333,-2.032778) node[right=-2bp]{\tt uB};
+\dpiclw=0.8bp
+\dpicdraw (3.503333,-2.127778)
+ --(3.503333,-1.917778)\dpicstop
+\filldraw[line width=0bp](3.536667,-2.072778)
+ --(3.503333,-1.972778)
+ --(3.47,-2.072778) --cycle\dpicstop
+\dpicdraw (3.503333,-2.072778)
+ --(3.503333,-1.990346)\dpicstop
+\dpicdraw (3.623333,-2.127778)
+ --(3.623333,-1.917778)\dpicstop
+\dpicdraw (3.353333,-1.917778)
+ --(3.443333,-1.917778)\dpicstop
+\dpicdraw (3.473333,-1.917778)
+ --(3.533333,-1.917778)\dpicstop
+\dpicdraw (3.563333,-1.917778)
+ --(3.653333,-1.917778)\dpicstop
+\dpicdraw (3.383333,-1.857778)
+ --(3.623333,-1.857778)
+ --(3.623333,-1.707778)\dpicstop
+\dpicdraw (3.383333,-2.127778)
+ --(3.383333,-1.917778)\dpicstop
+\draw (3.503333,-2.277778) node[below=-2bp]{{\tt $\ldots$(,{,}uMEDSuB)}};
+\draw (3.623333,-1.707778) node[left=-2bp]{$G$};
+\draw (3.383333,-2.127778) node[left=-2bp]{$S$};
+\draw (3.623333,-2.127778) node[right=-2bp]{$D$};
+\draw (3.503333,-2.127778) node[below=-2bp]{$B$};
+\dpicdraw (4.643333,-2.112778)
+ --(4.643333,-1.962778)\dpicstop
+\dpicdraw (4.403333,-1.962778)
+ --(4.643333,-1.962778)\dpicstop
+\dpicdraw (4.403333,-2.112778)
+ --(4.403333,-1.962778)\dpicstop
+\dpicdraw (4.403333,-1.902778)
+ --(4.643333,-1.902778)\dpicstop
+\dpicdraw (4.523333,-1.862778) circle (0.015748in)\dpicstop
+\dpicdraw (4.523333,-1.822778)
+ --(4.523333,-1.722778)\dpicstop
+\draw (4.523333,-2.162778) node[below=-2bp]{\tt $\ldots$(,{,}ZSDFdT,)};
+\dpiclw=0.4bp
+\filldraw[line width=0bp](4.370335,-2.05406)
+ --(4.403333,-1.992778)
+ --(4.342051,-2.025776) --cycle\dpicstop
+\dpicdraw (4.389662,-2.006449)
+ --(4.323333,-2.072778)\dpicstop
+\draw (4.323333,-2.072778) node[left=-2bp]{\tt Z};
+\filldraw[line width=0bp](4.520367,-2.007933)
+ --(4.573333,-1.962778)
+ --(4.504258,-1.971321) --cycle\dpicstop
+\dpicdraw (4.323333,-2.072778)
+ --(4.555637,-1.970564)\dpicstop
+\filldraw[line width=0bp](4.577324,-2.08485)
+ --(4.643333,-2.062778)
+ --(4.576074,-2.04487) --cycle\dpicstop
+\dpicdraw (4.323333,-2.072778)
+ --(4.624009,-2.063382)\dpicstop
+\filldraw[line width=0bp](4.592903,-1.744886)
+ --(4.523333,-1.742778)
+ --(4.580254,-1.782833) --cycle\dpicstop
+\dpicdraw (4.541675,-1.748892)
+ --(4.763333,-1.822778)\dpicstop
+\draw (4.763333,-1.822778) node[right=-2bp]{\tt dT};
+\dpiclw=0.8bp
+\dpicdraw (5.483333,-1.917778)
+ --(5.273333,-1.917778)\dpicstop
+\filldraw[line width=0bp](5.328333,-1.951111)
+ --(5.428333,-1.917778)
+ --(5.328333,-1.884444) --cycle\dpicstop
+\dpicdraw (5.410765,-1.917778)
+ --(5.328333,-1.917778)\dpicstop
+\dpicdraw (5.483333,-1.797778)
+ --(5.273333,-1.797778)\dpicstop
+\dpicdraw (5.273333,-2.067778)
+ --(5.273333,-1.977778)\dpicstop
+\dpicdraw (5.273333,-1.947778)
+ --(5.273333,-1.887778)\dpicstop
+\dpicdraw (5.273333,-1.857778)
+ --(5.273333,-1.767778)\dpicstop
+\dpicdraw (5.213333,-1.797778)
+ --(5.213333,-2.037778)
+ --(5.063333,-2.037778)\dpicstop
+\dpicdraw (5.603333,-1.797778)
+ --(5.603333,-1.874477)\dpicstop
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!0!black]
+\dpicdraw (5.603333,-1.874477)
+ --(5.653333,-1.874477)
+ --(5.603333,-1.955544)
+ --(5.553333,-1.874477)
+ --(5.603333,-1.874477)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\dpicdraw (5.549282,-1.936079)
+ --(5.549282,-1.961079)
+ --(5.657385,-1.961079)
+ --(5.657385,-1.986079)\dpicstop
+\dpicdraw (5.603333,-1.961079)
+ --(5.603333,-2.037778)\dpicstop
+\dpicdraw (5.483333,-2.037778)
+ --(5.603333,-2.037778)
+ --(5.603333,-1.797778)
+ --(5.483333,-1.797778)\dpicstop
+\dpicdraw (5.472264,-1.917778)
+ --(5.483333,-1.917778)
+ --(5.483333,-2.037778)
+ --(5.472264,-2.037778)\dpicstop
+\dpicdraw (5.483333,-2.037778)
+ --(5.273333,-2.037778)\dpicstop
+\dpicdraw (5.603333,-2.037778)
+ --(5.603333,-2.157778)\dpicstop
+\dpicdraw (5.603333,-1.797778)
+ --(5.603333,-1.677778)\dpicstop
+\dpicdraw (5.423333,-1.917778) circle (0.11811in)\dpicstop
+\draw (5.393333,-2.367778) node[below=-2bp]{\tt IRF4905};
+\draw (5.063333,-2.037778) node[left=-2bp]{$G$};
+\draw (5.603333,-1.677778) node[above right=-2bp]{$D$};
+\draw (5.603333,-2.157778) node[below right=-2bp]{$S$};
+\dpicdraw (0.2,-1.175)
+ --(0.2,-1)\dpicstop
+\filldraw[line width=0bp](0.172222,-1.045833)
+ --(0.2,-1.129167)
+ --(0.227778,-1.045833) --cycle\dpicstop
+\dpicdraw (0.2,-1.111598)
+ --(0.2,-1.045833)\dpicstop
+\dpicdraw (0.3,-1.175)
+ --(0.3,-1)\dpicstop
+\dpicdraw (0.075,-1)
+ --(0.325,-1)\dpicstop
+\dpicdraw (0.075,-0.843875)
+ --(0.075,-0.95)
+ --(0.158333,-0.95)\dpicstop
+\dpicdraw (0.241667,-0.804388)
+ --(0.241667,-0.95)
+ --(0.325,-0.95)\dpicstop
+\dpicdraw (0.2,-1.16393)
+ --(0.2,-1.175)
+ --(0.1,-1.175)
+ --(0.1,-1.16393)\dpicstop
+\dpicdraw (0.1,-1.175)
+ --(0.1,-1)\dpicstop
+\dpicdraw (0.2,-1) circle (0.07874in)\dpicstop
+\draw (0.075,-0.843875) node[above left=-2bp]{$G0$};
+\draw (0.241667,-0.804388) node[above right=-2bp]{$G1$};
+\draw (0.725,-1.48) node{\tt mosfet(,{,}dBSDFQM1,E)};
+\dpicdraw (1.025,-1.175)
+ --(1.025,-1)\dpicstop
+\filldraw[line width=0bp](0.997222,-1.045833)
+ --(1.025,-1.129167)
+ --(1.052778,-1.045833) --cycle\dpicstop
+\dpicdraw (1.025,-1.111598)
+ --(1.025,-1.045833)\dpicstop
+\dpicdraw (1.125,-1.175)
+ --(1.125,-1)\dpicstop
+\dpicdraw (0.9,-1)
+ --(1.15,-1)\dpicstop
+\dpicdraw (1.15,-0.8)
+ --(1.15,-0.95)
+ --(1.066667,-0.95)\dpicstop
+\dpicdraw (0.983333,-0.8)
+ --(0.983333,-0.95)
+ --(0.9,-0.95)\dpicstop
+\dpicdraw (1.025,-1.16393)
+ --(1.025,-1.175)
+ --(0.925,-1.175)
+ --(0.925,-1.16393)\dpicstop
+\dpicdraw (0.925,-1.175)
+ --(0.925,-1)\dpicstop
+\draw (1.15,-0.8) node[above right=-2bp]{$G0$};
+\draw (0.983333,-0.8) node[above left=-2bp]{$G1$};
+\draw (1.025,-1.275) node{\tt ...(,{,}dBSDFQuM1)};
+\end{tikzpicture}
+\vspace*{-0.5\baselineskip}
diff --git a/graphics/circuit_macros/doc/fet.m4 b/graphics/circuit_macros/doc/fetMan.m4
index 08498ef83d..08498ef83d 100644
--- a/graphics/circuit_macros/doc/fet.m4
+++ b/graphics/circuit_macros/doc/fetMan.m4
diff --git a/graphics/circuit_macros/doc/relaycoil.m4 b/graphics/circuit_macros/doc/relaycoilMan.m4
index b3273794cd..b3273794cd 100644
--- a/graphics/circuit_macros/doc/relaycoil.m4
+++ b/graphics/circuit_macros/doc/relaycoilMan.m4
diff --git a/graphics/circuit_macros/doc/sampleIC.m4 b/graphics/circuit_macros/doc/sampleIC.m4
new file mode 100644
index 0000000000..bf2bb2358e
--- /dev/null
+++ b/graphics/circuit_macros/doc/sampleIC.m4
@@ -0,0 +1,16 @@
+.PS
+log_init
+command "\small\sf"
+
+ U: box wid 18*L_unit ht 9*lg_pinsep
+
+ Loopover_(`x',
+ `lg_pin(U.nw-(0,m4Lx*lg_pinsep),,,w`'x)',
+ nul,L,M,I,O,N,E,NE)
+
+ define(`Upin',
+ `lg_pin(U.ne-(0,(17-`$1')*lg_pinsep),`$2',Pin`$1',e`$3',`$1',8*L_unit)')
+ Loopover_(`x',
+ `Upin(patsubst(x,;,`,'))',
+ 16;Vin;, 15;D0;L, 14;D1;M, 13;D2;I, 12;D3;O, 11;D4;N, 10;D5;E, 9;D6;NE )
+.PE
diff --git a/graphics/circuit_macros/doc/thyristor.tex b/graphics/circuit_macros/doc/thyristor.tex
new file mode 100644
index 0000000000..33b2c5261c
--- /dev/null
+++ b/graphics/circuit_macros/doc/thyristor.tex
@@ -0,0 +1,561 @@
+\begin{tikzpicture}[scale=2.54]
+% dpic version 2020.03.01 option -g for TikZ and PGF 1.01
+\ifx\dpiclw\undefined\newdimen\dpiclw\fi
+\global\def\dpicdraw{\draw[line width=\dpiclw]}
+\global\def\dpicstop{;}
+\dpiclw=0.8bp
+\dpiclw=0.8bp
+\dpicdraw (-2.38478,-0.179985)
+ --(-2.38478,-0.3189)\dpicstop
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!0!black]
+\dpicdraw (-2.38478,-0.3189)
+ --(-2.343113,-0.3189)
+ --(-2.38478,-0.385534)
+ --(-2.426446,-0.3189)
+ --(-2.38478,-0.3189)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\dpicdraw (-2.430498,-0.391069)
+ --(-2.339061,-0.391069)\dpicstop
+\dpicdraw (-2.363946,-0.391069)
+ --(-2.32228,-0.463238)\dpicstop
+\dpicdraw (-2.38478,-0.391069)
+ --(-2.38478,-0.529985)\dpicstop
+\draw (-2.38478,-0.179985) node[above=-2bp]{\sl A};
+\draw (-2.38478,-0.529985) node[below=-2bp]{\sl K};
+\draw (-2.32228,-0.463238) node[right=-2bp]{\sl G};
+\draw (-2.376389,-0.779985) node{\tt thyristor};
+\dpicdraw (-1.876389,-0.179985)
+ --(-1.876389,-0.3189)\dpicstop
+\dpicdraw (-1.876389,-0.3189)
+ --(-1.813889,-0.427154)\dpicstop
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!0!black]
+\dpicdraw (-1.834722,-0.3189)
+ --(-1.793056,-0.3189)
+ --(-1.834722,-0.385534)
+ --(-1.876389,-0.3189)
+ --(-1.834722,-0.3189)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\dpicdraw (-1.963774,-0.391069)
+ --(-1.789004,-0.391069)\dpicstop
+\dpicdraw (-1.963774,-0.3189)
+ --(-1.789004,-0.3189)\dpicstop
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!0!black]
+\dpicdraw (-1.918056,-0.391069)
+ --(-1.876389,-0.391069)
+ --(-1.918056,-0.324435)
+ --(-1.959722,-0.391069)
+ --(-1.918056,-0.391069)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\dpicdraw (-1.876389,-0.391069)
+ --(-1.876389,-0.529985)\dpicstop
+\draw (-1.876389,-0.179985) node[above=-2bp]{\sl T1};
+\draw (-1.876389,-0.529985) node[below=-2bp]{\sl T2};
+\draw (-1.813889,-0.427154) node[below right=-2bp]{\sl G};
+\draw (-1.876389,-0.879985) node{\tt ...(,B)};
+\dpicdraw (-1.376389,-0.179985)
+ --(-1.376389,-0.3439)\dpicstop
+\dpicdraw (-1.376389,-0.3439)
+ --(-1.438889,-0.452154)\dpicstop
+\dpicdraw (-1.418056,-0.3439)
+ --(-1.376389,-0.3439)
+ --(-1.418056,-0.410534)
+ --(-1.459722,-0.3439)
+ --(-1.418056,-0.3439)\dpicstop
+\dpicdraw (-1.463774,-0.416069)
+ --(-1.289004,-0.416069)\dpicstop
+\dpicdraw (-1.463774,-0.3439)
+ --(-1.289004,-0.3439)\dpicstop
+\dpicdraw (-1.334722,-0.416069)
+ --(-1.293056,-0.416069)
+ --(-1.334722,-0.349435)
+ --(-1.376389,-0.416069)
+ --(-1.334722,-0.416069)\dpicstop
+\dpicdraw (-1.376389,-0.416069)
+ --(-1.376389,-0.579985)\dpicstop
+\draw (-1.376389,-0.179985) node[above=-2bp]{\sl T1};
+\draw (-1.376389,-0.579985) node[below=-2bp]{\sl T2};
+\draw (-1.438889,-0.452154) node[below left=-2bp]{\sl G};
+\draw (-1.376389,-0.799985) node{\tt ...(,BRK)};
+\dpicdraw (-0.776389,-0.179985)
+ --(-0.776389,-0.3189)\dpicstop
+\dpicdraw (-0.776389,-0.3189)
+ --(-0.693056,-0.463238)
+ --(-0.637945,-0.463238)\dpicstop
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!0!black]
+\dpicdraw (-0.734722,-0.3189)
+ --(-0.693056,-0.3189)
+ --(-0.734722,-0.385534)
+ --(-0.776389,-0.3189)
+ --(-0.734722,-0.3189)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\dpicdraw (-0.863774,-0.391069)
+ --(-0.689004,-0.391069)\dpicstop
+\dpicdraw (-0.863774,-0.3189)
+ --(-0.689004,-0.3189)\dpicstop
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!0!black]
+\dpicdraw (-0.818056,-0.391069)
+ --(-0.776389,-0.391069)
+ --(-0.818056,-0.324435)
+ --(-0.859722,-0.391069)
+ --(-0.818056,-0.391069)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\dpicdraw (-0.776389,-0.391069)
+ --(-0.776389,-0.529985)\dpicstop
+\dpicdraw (-0.776389,-0.354985) circle (0.068898in)\dpicstop
+\draw (-0.776389,-0.179985) node[above=-2bp]{\sl T1};
+\draw (-0.776389,-0.529985) node[below=-2bp]{\sl T2};
+\draw (-0.637945,-0.463238) node[below right=-2bp]{\sl G};
+\draw (-0.776389,-0.879985) node{\tt ...(,BE)};
+\dpicdraw (-0.28478,-0.179985)
+ --(-0.28478,-0.3189)\dpicstop
+\dpicdraw (-0.28478,-0.3189)
+ --(-0.243113,-0.3189)
+ --(-0.28478,-0.385534)
+ --(-0.326446,-0.3189)
+ --(-0.28478,-0.3189)\dpicstop
+\dpicdraw (-0.330498,-0.391069)
+ --(-0.239061,-0.391069)\dpicstop
+\dpicdraw (-0.263946,-0.391069)
+ --(-0.22228,-0.463238)\dpicstop
+\dpicdraw (-0.28478,-0.391069)
+ --(-0.28478,-0.529985)\dpicstop
+\draw (-0.28478,-0.179985) node[above=-2bp]{\sl A};
+\draw (-0.28478,-0.529985) node[below=-2bp]{\sl K};
+\draw (-0.22228,-0.463238) node[right=-2bp]{\sl G};
+\draw (-0.276389,-0.879985) node{\tt ...(,A)};
+\dpicdraw (0.21522,-0.179985)
+ --(0.21522,-0.3189)\dpicstop
+\dpicdraw (0.21522,-0.3189)
+ --(0.256887,-0.3189)
+ --(0.21522,-0.385534)
+ --(0.21522,-0.3189)\dpicstop
+\dpicdraw (0.21522,-0.3189)
+ --(0.173554,-0.3189)\dpicstop
+\dpicdraw (0.169502,-0.391069)
+ --(0.260939,-0.391069)\dpicstop
+\dpicdraw (0.236054,-0.391069)
+ --(0.27772,-0.463238)\dpicstop
+\dpicdraw (0.21522,-0.391069)
+ --(0.21522,-0.529985)\dpicstop
+\draw (0.21522,-0.179985) node[above=-2bp]{\sl A};
+\draw (0.21522,-0.529985) node[below=-2bp]{\sl K};
+\draw (0.27772,-0.463238) node[right=-2bp]{\sl G};
+\draw (0.223611,-0.749985) node{\tt ...(,F)};
+\dpicdraw (0.873611,-0.179985)
+ --(0.873611,-0.3189)\dpicstop
+\dpicdraw (0.873611,-0.3189)
+ --(0.790278,-0.463238)
+ --(0.735167,-0.463238)\dpicstop
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!0!black]
+\dpicdraw (0.831944,-0.3189)
+ --(0.873611,-0.3189)
+ --(0.831944,-0.385534)
+ --(0.790278,-0.3189)
+ --(0.831944,-0.3189)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\dpicdraw (0.786226,-0.391069)
+ --(0.960996,-0.391069)\dpicstop
+\dpicdraw (0.786226,-0.3189)
+ --(0.960996,-0.3189)\dpicstop
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!0!black]
+\dpicdraw (0.915278,-0.391069)
+ --(0.956944,-0.391069)
+ --(0.915278,-0.324435)
+ --(0.873611,-0.391069)
+ --(0.915278,-0.391069)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\dpicdraw (0.873611,-0.391069)
+ --(0.873611,-0.529985)\dpicstop
+\dpicdraw (0.873611,-0.354985) circle (0.068898in)\dpicstop
+\draw (0.873611,-0.179985) node[above=-2bp]{\sl T1};
+\draw (0.873611,-0.529985) node[below=-2bp]{\sl T2};
+\draw (0.735167,-0.463238) node[below left=-2bp]{\sl G};
+\draw (0.873611,-0.879985) node{\tt ...(,BRE)};
+\dpicdraw (1.623611,-0.179985)
+ --(1.623611,-0.3189)\dpicstop
+\dpicdraw (1.623611,-0.3189)
+ --(1.665278,-0.3189)
+ --(1.623611,-0.385534)
+ --(1.581944,-0.3189)
+ --(1.623611,-0.3189)\dpicstop
+\dpicdraw (1.623611,-0.3189)
+ --(1.623611,-0.391069)\dpicstop
+\dpicdraw (1.577893,-0.391069)
+ --(1.66933,-0.391069)\dpicstop
+\dpicdraw (1.602778,-0.391069)
+ --(1.561111,-0.463238)
+ --(1.486111,-0.463238)\dpicstop
+\dpicdraw (1.623611,-0.391069)
+ --(1.623611,-0.529985)\dpicstop
+\dpicdraw (1.623611,-0.354985) circle (0.068898in)\dpicstop
+\draw (1.623611,-0.179985) node[above=-2bp]{\sl A};
+\draw (1.623611,-0.529985) node[below=-2bp]{\sl K};
+\draw (1.486111,-0.463238) node[below left=-2bp]{\sl G};
+\draw (1.623611,-0.749985) node{\tt ...(,UARE)};
+\dpicdraw (2.123611,-0.179985)
+ --(2.123611,-0.3189)\dpicstop
+\dpicdraw (2.123611,-0.3189)
+ --(2.165278,-0.3189)
+ --(2.123611,-0.385534)
+ --(2.081944,-0.3189)
+ --(2.123611,-0.3189)\dpicstop
+\dpicdraw (2.077893,-0.354985)
+ --(2.16933,-0.354985)\dpicstop
+\dpicdraw (2.077893,-0.391069)
+ --(2.16933,-0.391069)\dpicstop
+\dpicdraw (2.123611,-0.391069)
+ --(2.123611,-0.529985)\dpicstop
+\dpiclw=0.4bp
+\filldraw[line width=0bp](2.135537,-0.286412)
+ --(2.123611,-0.354985)
+ --(2.171314,-0.304301) --cycle\dpicstop
+\dpicdraw (2.223611,-0.254985)
+ --(2.198611,-0.254985)
+ ..controls (2.181944,-0.254985) and (2.166719,-0.268769)
+ ..(2.152934,-0.296338)
+ --(2.132257,-0.337692)\dpicstop
+\dpiclw=0.8bp
+\draw (2.123611,-0.179985) node[above=-2bp]{\sl A};
+\draw (2.123611,-0.529985) node[below=-2bp]{\sl K};
+\draw (2.223611,-0.254985) node[right=-2bp]{\sl G};
+\draw (2.123611,-0.879985) node{\tt ...(,AV)};
+\dpicdraw (2.523611,-0.229985)
+ --(2.523611,-0.429985)\dpicstop
+\dpicdraw (2.723611,-0.179985)
+ --(2.523611,-0.269985)\dpicstop
+\filldraw[line width=0bp](2.638206,-0.187957)
+ --(2.573611,-0.247485)
+ --(2.661004,-0.238619) --cycle\dpicstop
+\dpicdraw (2.673611,-0.202485)
+ --(2.589632,-0.240275)\dpicstop
+\dpicdraw (2.723611,-0.479985)
+ --(2.523611,-0.389985)\dpicstop
+\filldraw[line width=0bp](2.586219,-0.448619)
+ --(2.673611,-0.457485)
+ --(2.609017,-0.397957) --cycle\dpicstop
+\dpicdraw (2.65759,-0.450275)
+ --(2.573611,-0.412485)\dpicstop
+\dpicdraw (2.523611,-0.329985)
+ --(2.597685,-0.363318)\dpicstop
+\draw (2.723611,-0.179985) node[above right=-2bp]{\sl A};
+\draw (2.723611,-0.479985) node[below right=-2bp]{\sl K};
+\draw (2.597685,-0.363318) node[right=-2bp]{\sl G};
+\draw (2.623611,-0.699985) node{\tt ...(,IEC)};
+\dpicdraw (-2.457639,-1.336073)
+ --(-2.457639,-1.474989)\dpicstop
+\dpicdraw (-2.457639,-1.474989)
+ --(-2.415972,-1.474989)
+ --(-2.457639,-1.541623)
+ --(-2.499306,-1.474989)
+ --(-2.457639,-1.474989)\dpicstop
+\dpicdraw (-2.457639,-1.474989)
+ --(-2.457639,-1.547157)\dpicstop
+\dpicdraw (-2.436806,-1.511073)
+ --(-2.34942,-1.511073)\dpicstop
+\dpicdraw (-2.503357,-1.547157)
+ --(-2.41192,-1.547157)\dpicstop
+\dpicdraw (-2.457639,-1.547157)
+ --(-2.457639,-1.686073)\dpicstop
+\draw (-2.457639,-1.336073) node[above left=-2bp]{\sl A};
+\draw (-2.457639,-1.686073) node[below left=-2bp]{\sl K};
+\draw (-2.34942,-1.511073) node[right=-2bp]{\sl G};
+\draw (-2.426389,-2.036073) node{\tt ...(,UAH)};
+\dpicdraw (-1.867998,-1.336073)
+ --(-1.867998,-1.474989)\dpicstop
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!0!black]
+\dpicdraw (-1.867998,-1.474989)
+ --(-1.826331,-1.474989)
+ --(-1.867998,-1.541623)
+ --(-1.909665,-1.474989)
+ --(-1.867998,-1.474989)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\dpicdraw (-1.913717,-1.547157)
+ --(-1.82228,-1.547157)\dpicstop
+\dpicdraw (-1.888831,-1.474989)
+ --(-1.930498,-1.40282)\dpicstop
+\dpicdraw (-1.867998,-1.547157)
+ --(-1.867998,-1.686073)\dpicstop
+\draw (-1.867998,-1.336073) node[above=-2bp]{\sl A};
+\draw (-1.867998,-1.686073) node[below=-2bp]{\sl K};
+\draw (-1.930498,-1.40282) node[left=-2bp]{\sl Ga};
+\draw (-1.876389,-1.906073) node{\tt ...(,N)};
+\dpicdraw (-1.326389,-1.336073)
+ --(-1.326389,-1.474989)\dpicstop
+\dpicdraw (-1.326389,-1.474989)
+ --(-1.284722,-1.474989)
+ --(-1.326389,-1.541623)
+ --(-1.368056,-1.474989)
+ --(-1.326389,-1.474989)\dpicstop
+\dpicdraw (-1.326389,-1.474989)
+ --(-1.326389,-1.547157)\dpicstop
+\dpicdraw (-1.372107,-1.547157)
+ --(-1.28067,-1.547157)\dpicstop
+\dpicdraw (-1.305556,-1.474989)
+ --(-1.263889,-1.40282)
+ --(-1.188889,-1.40282)\dpicstop
+\dpicdraw (-1.326389,-1.547157)
+ --(-1.326389,-1.686073)\dpicstop
+\dpicdraw (-1.326389,-1.511073) circle (0.068898in)\dpicstop
+\draw (-1.326389,-1.336073) node[above=-2bp]{\sl A};
+\draw (-1.326389,-1.686073) node[below=-2bp]{\sl K};
+\draw (-1.188889,-1.40282) node[above right=-2bp]{\sl Ga};
+\draw (-1.326389,-2.036073) node{\tt ...(,UANRE)};
+\dpicdraw (-0.78478,-1.336073)
+ --(-0.78478,-1.474989)\dpicstop
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!0!black]
+\dpicdraw (-0.78478,-1.474989)
+ --(-0.743113,-1.474989)
+ --(-0.78478,-1.541623)
+ --(-0.826446,-1.474989)
+ --(-0.78478,-1.474989)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\dpicdraw (-0.830498,-1.547157)
+ --(-0.739061,-1.547157)\dpicstop
+\dpicdraw (-0.763946,-1.547157)
+ --(-0.72228,-1.619326)\dpicstop
+\dpicdraw (-0.78478,-1.547157)
+ --(-0.78478,-1.686073)\dpicstop
+\draw (-0.78478,-1.336073) node[above=-2bp]{\sl A};
+\draw (-0.78478,-1.686073) node[below left=-2bp]{\sl K};
+\draw (-0.72228,-1.619326) node[below right=-2bp]{\sl G};
+\draw (-0.776389,-1.906073) node{\tt ...(,SCR)};
+\dpicdraw (-0.226389,-1.336073)
+ --(-0.226389,-1.474989)\dpicstop
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!0!black]
+\dpicdraw (-0.226389,-1.474989)
+ --(-0.184722,-1.474989)
+ --(-0.226389,-1.541623)
+ --(-0.268056,-1.474989)
+ --(-0.226389,-1.474989)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\dpicdraw (-0.272107,-1.547157)
+ --(-0.18067,-1.547157)\dpicstop
+\dpicdraw (-0.205556,-1.547157)
+ --(-0.163889,-1.619326)
+ --(-0.088889,-1.619326)\dpicstop
+\dpicdraw (-0.226389,-1.547157)
+ --(-0.226389,-1.686073)\dpicstop
+\dpicdraw (-0.226389,-1.511073) circle (0.068898in)\dpicstop
+\draw (-0.226389,-1.336073) node[above=-2bp]{\sl A};
+\draw (-0.226389,-1.686073) node[below=-2bp]{\sl K};
+\draw (-0.088889,-1.619326) node[below right=-2bp]{\sl G};
+\draw (-0.226389,-2.036073) node{\tt ...(SCRE)};
+\dpicdraw (0.423611,-1.336073)
+ --(0.423611,-1.474989)\dpicstop
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!0!black]
+\dpicdraw (0.423611,-1.474989)
+ --(0.465278,-1.474989)
+ --(0.423611,-1.541623)
+ --(0.381944,-1.474989)
+ --(0.423611,-1.474989)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\dpicdraw (0.377893,-1.547157)
+ --(0.46933,-1.547157)\dpicstop
+\dpicdraw (0.402778,-1.547157)
+ --(0.361111,-1.619326)
+ --(0.286111,-1.619326)\dpicstop
+\dpicdraw (0.423611,-1.547157)
+ --(0.423611,-1.686073)\dpicstop
+\dpicdraw (0.423611,-1.511073) circle (0.068898in)\dpicstop
+\draw (0.423611,-1.336073) node[above=-2bp]{\sl A};
+\draw (0.423611,-1.686073) node[below=-2bp]{\sl K};
+\draw (0.286111,-1.619326) node[below left=-2bp]{\sl G};
+\draw (0.423611,-1.906073) node{\tt ...(SCRRE)};
+\dpicdraw (0.973611,-1.336073)
+ --(0.973611,-1.474989)\dpicstop
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!0!black]
+\dpicdraw (0.973611,-1.474989)
+ --(1.015278,-1.474989)
+ --(0.973611,-1.541623)
+ --(0.931944,-1.474989)
+ --(0.973611,-1.474989)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\dpicdraw (0.927893,-1.547157)
+ --(1.01933,-1.547157)\dpicstop
+\dpicdraw (0.952778,-1.474989)
+ --(0.911111,-1.40282)\dpicstop
+\dpicdraw (0.994444,-1.547157)
+ --(1.036111,-1.619326)\dpicstop
+\dpicdraw (0.973611,-1.547157)
+ --(0.973611,-1.686073)\dpicstop
+\draw (0.973611,-1.336073) node[above=-2bp]{\sl A};
+\draw (0.973611,-1.686073) node[below=-2bp]{\sl K};
+\draw (1.036111,-1.619326) node[right=-2bp]{\sl G};
+\draw (0.973611,-2.036073) node{\tt ...(SCS)};
+\draw (0.911111,-1.40282) node[above left=-2bp]{\sl Ga};
+\dpicdraw (1.523611,-1.336073)
+ --(1.523611,-1.474989)\dpicstop
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!0!black]
+\dpicdraw (1.523611,-1.474989)
+ --(1.565278,-1.474989)
+ --(1.523611,-1.541623)
+ --(1.481944,-1.474989)
+ --(1.523611,-1.474989)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\dpicdraw (1.477893,-1.547157)
+ --(1.56933,-1.547157)\dpicstop
+\dpicdraw (1.502778,-1.474989)
+ --(1.461111,-1.40282)
+ --(1.386111,-1.40282)\dpicstop
+\dpicdraw (1.544444,-1.547157)
+ --(1.586111,-1.619326)
+ --(1.661111,-1.619326)\dpicstop
+\dpicdraw (1.523611,-1.547157)
+ --(1.523611,-1.686073)\dpicstop
+\dpicdraw (1.523611,-1.511073) circle (0.068898in)\dpicstop
+\draw (1.523611,-1.336073) node[above=-2bp]{\sl A};
+\draw (1.523611,-1.686073) node[below=-2bp]{\sl K};
+\draw (1.661111,-1.619326) node[below right=-2bp]{\sl G};
+\draw (1.523611,-1.906073) node{\tt ...(SCSE)};
+\draw (1.386111,-1.40282) node[above left=-2bp]{\sl Ga};
+\dpicdraw (2.173611,-1.336073)
+ --(2.173611,-1.474989)\dpicstop
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!0!black]
+\dpicdraw (2.173611,-1.474989)
+ --(2.215278,-1.474989)
+ --(2.173611,-1.541623)
+ --(2.173611,-1.474989)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\dpicdraw (2.173611,-1.474989)
+ --(2.002372,-1.474989)\dpicstop
+\dpicdraw (2.173611,-1.547157)
+ --(2.173611,-1.686073)\dpicstop
+\dpicdraw (2.173611,-1.511073) circle (0.068898in)\dpicstop
+\draw (2.173611,-1.336073) node[above=-2bp]{\sl A};
+\draw (2.173611,-1.686073) node[below=-2bp]{\sl K};
+\draw (2.002372,-1.474989) node[left=-2bp]{\sl G};
+\draw (2.173611,-2.036073) node{\tt ...(SUSE)};
+\dpicdraw (2.823611,-1.336073)
+ --(2.823611,-1.438904)\dpicstop
+\dpicdraw (2.781944,-1.438904)
+ --(2.823611,-1.438904)\dpicstop
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!0!black]
+\dpicdraw (2.823611,-1.438904)
+ --(2.865278,-1.438904)
+ --(2.823611,-1.583242)
+ --(2.781944,-1.583242)
+ --(2.823611,-1.438904)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\dpicdraw (2.865278,-1.583242)
+ --(2.823611,-1.583242)\dpicstop
+\dpicdraw (2.865278,-1.511073)
+ --(2.648611,-1.511073)\dpicstop
+\dpicdraw (2.823611,-1.583242)
+ --(2.823611,-1.686073)\dpicstop
+\dpicdraw (2.823611,-1.511073) circle (0.068898in)\dpicstop
+\draw (2.823611,-1.336073) node[above=-2bp]{\sl T1};
+\draw (2.823611,-1.686073) node[below=-2bp]{\sl T2};
+\draw (2.648611,-1.511073) node[left=-2bp]{\sl G};
+\draw (2.823611,-1.906073) node{\tt ...(SBSE)};
+\dpicdraw (-2.751389,-2.402454)
+ --(-2.412473,-2.402454)\dpicstop
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!0!black]
+\dpicdraw (-2.412473,-2.402454)
+ --(-2.412473,-2.360788)
+ --(-2.345839,-2.402454)
+ --(-2.412473,-2.444121)
+ --(-2.412473,-2.402454)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\dpicdraw (-2.340304,-2.448173)
+ --(-2.340304,-2.356736)\dpicstop
+\dpicdraw (-2.340304,-2.381621)
+ --(-2.268136,-2.339954)\dpicstop
+\dpicdraw (-2.340304,-2.402454)
+ --(-2.001389,-2.402454)\dpicstop
+\draw (-2.001389,-2.394064) node[right=-2bp]{\tt scr(,{,}Q)};
+\draw (-2.268136,-2.339954) node[above=-2bp]{\sl Q.G};
+\dpicdraw (-2.751389,-2.802454)
+ --(-2.412473,-2.802454)\dpicstop
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!0!black]
+\dpicdraw (-2.412473,-2.802454)
+ --(-2.412473,-2.760788)
+ --(-2.345839,-2.802454)
+ --(-2.412473,-2.844121)
+ --(-2.412473,-2.802454)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\dpicdraw (-2.340304,-2.848173)
+ --(-2.340304,-2.756736)\dpicstop
+\dpicdraw (-2.412473,-2.823288)
+ --(-2.484642,-2.864954)\dpicstop
+\dpicdraw (-2.340304,-2.781621)
+ --(-2.268136,-2.739954)\dpicstop
+\dpicdraw (-2.340304,-2.802454)
+ --(-2.001389,-2.802454)\dpicstop
+\draw (-2.001389,-2.802454) node[right=-2bp]{\tt scs(,{,}Q2)};
+\draw (-2.268136,-2.739954) node[above=-2bp]{\sl Q2.G};
+\draw (-2.484642,-2.864954) node[below=-2bp]{\sl Q2.Ga};
+\dpicdraw (-0.973611,-2.600574)
+ --(-0.634696,-2.600574)\dpicstop
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!0!black]
+\dpicdraw (-0.634696,-2.600574)
+ --(-0.634696,-2.642241)
+ --(-0.568062,-2.600574)
+ --(-0.634696,-2.600574)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\dpicdraw (-0.634696,-2.600574)
+ --(-0.634696,-2.429335)\dpicstop
+\dpicdraw (-0.562527,-2.600574)
+ --(-0.223611,-2.600574)\dpicstop
+\dpicdraw (-0.598611,-2.600574) circle (0.068898in)\dpicstop
+\draw (-0.223611,-2.600574) node[right=-2bp]{\tt sus(,RE,Q3)};
+\draw (-0.634696,-2.429335) node[above=-2bp]{\sl Q3.G};
+\dpicdraw (0.976389,-2.600574)
+ --(1.27922,-2.600574)\dpicstop
+\dpicdraw (1.27922,-2.642241)
+ --(1.27922,-2.600574)\dpicstop
+\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}
+\global\def\dpicstop{--}
+\dpicshdraw[fill=white!0!black]
+\dpicdraw (1.27922,-2.600574)
+ --(1.27922,-2.558907)
+ --(1.423558,-2.600574)
+ --(1.423558,-2.642241)
+ --(1.27922,-2.600574)\dpicstop
+cycle; \global\let\dpicdraw=\dpicshdraw\global\def\dpicstop{;}
+\dpicdraw (1.423558,-2.558907)
+ --(1.423558,-2.600574)\dpicstop
+\dpicdraw (1.351389,-2.558907)
+ --(1.351389,-2.775574)\dpicstop
+\dpicdraw (1.423558,-2.600574)
+ --(1.726389,-2.600574)\dpicstop
+\dpicdraw (1.351389,-2.600574) circle (0.068898in)\dpicstop
+\draw (1.726389,-2.600574) node[right=-2bp]{\tt sbs(,E,Q4)};
+\draw (1.351389,-2.775574) node[below=-2bp]{\sl Q4.G};
+\end{tikzpicture}
+\vspace*{-0.5\baselineskip}
diff --git a/graphics/circuit_macros/doc/thyristor.m4 b/graphics/circuit_macros/doc/thyristorMan.m4
index ecc6448bf3..ecc6448bf3 100644
--- a/graphics/circuit_macros/doc/thyristor.m4
+++ b/graphics/circuit_macros/doc/thyristorMan.m4
diff --git a/graphics/circuit_macros/doc/ujt.tex b/graphics/circuit_macros/doc/ujt.tex
new file mode 100644
index 0000000000..46a8566fe6
--- /dev/null
+++ b/graphics/circuit_macros/doc/ujt.tex
@@ -0,0 +1,81 @@
+\begin{tikzpicture}[scale=2.54]
+% dpic version 2020.03.01 option -g for TikZ and PGF 1.01
+\ifx\dpiclw\undefined\newdimen\dpiclw\fi
+\global\def\dpicdraw{\draw[line width=\dpiclw]}
+\global\def\dpicstop{;}
+\dpiclw=0.8bp
+\dpiclw=0.8bp
+\dpicdraw (0.9,-0.15)
+ --(0.9,0)\dpicstop
+\dpicdraw (0.9,0)
+ --(0.725,0)\dpicstop
+\dpicdraw (0.725,-0.025)
+ --(0.725,0.225)\dpicstop
+\dpicdraw (0.725,0.2)
+ --(0.9,0.2)
+ --(0.9,0.35)\dpicstop
+\dpicdraw (0.55,0.2)
+ --(0.725,0.1)\dpicstop
+\filldraw[line width=0bp](0.61699,0.129727)
+ --(0.703125,0.1125)
+ --(0.644553,0.177963) --cycle\dpicstop
+\dpicdraw (0.55,0.2)
+ --(0.687872,0.121216)\dpicstop
+\dpicdraw (0.725,0.1) circle (0.07874in)\dpicstop
+\draw (0.9,-0.15) node[right=-2bp]{\sl B1};
+\draw (0.4625,0.25) node{{\sl E}};
+\draw (0.9,0.35) node[right=-2bp]{\sl B2};
+\draw (0.725,-0.3) node{{\tt ujt(up\_ dimen\_,{,},E)}};
+\dpicdraw (2.125,0)
+ --(1.95,0)\dpicstop
+\dpicdraw (1.95,-0.025)
+ --(1.95,0.225)\dpicstop
+\dpicdraw (1.95,0.2)
+ --(2.125,0.2)\dpicstop
+\dpicdraw (1.775,0.2)
+ --(1.95,0.1)\dpicstop
+\filldraw[line width=0bp](1.88301,0.170273)
+ --(1.796875,0.1875)
+ --(1.855447,0.122037) --cycle\dpicstop
+\dpicdraw (1.95,0.1)
+ --(1.812128,0.178784)\dpicstop
+\draw (2.125,0) node[below=-2bp]{\sl B1};
+\draw (1.6875,0.25) node{{\sl E}};
+\draw (2.125,0.2) node[above=-2bp]{\sl B2};
+\draw (2.05,-0.175) node[below=-2bp]{{\tt ujt(,{,}P,)}};
+\dpicdraw (2.925,0)
+ --(3.1,0)\dpicstop
+\dpicdraw (3.1,-0.025)
+ --(3.1,0.225)\dpicstop
+\dpicdraw (3.1,0.2)
+ --(2.925,0.2)\dpicstop
+\dpicdraw (3.275,0.2)
+ --(3.1,0.1)\dpicstop
+\filldraw[line width=0bp](3.180447,0.177963)
+ --(3.121875,0.1125)
+ --(3.20801,0.129727) --cycle\dpicstop
+\dpicdraw (3.275,0.2)
+ --(3.137128,0.121216)\dpicstop
+\draw (2.925,0) node[below=-2bp]{\sl B1};
+\draw (3.3625,0.25) node{{\sl E}};
+\draw (2.925,0.2) node[above=-2bp]{\sl B2};
+\draw (3.1,-0.175) node[below=-2bp]{{\tt ujt(,R,{,})}};
+\dpicdraw (4.075,0)
+ --(4.25,0)\dpicstop
+\dpicdraw (4.25,-0.025)
+ --(4.25,0.225)\dpicstop
+\dpicdraw (4.25,0.2)
+ --(4.075,0.2)\dpicstop
+\dpicdraw (4.425,0.2)
+ --(4.25,0.1)\dpicstop
+\filldraw[line width=0bp](4.344553,0.122037)
+ --(4.403125,0.1875)
+ --(4.31699,0.170273) --cycle\dpicstop
+\dpicdraw (4.25,0.1)
+ --(4.387872,0.178784)\dpicstop
+\draw (4.075,0) node[below=-2bp]{\sl B1};
+\draw (4.5125,0.25) node{{\sl E}};
+\draw (4.075,0.2) node[above=-2bp]{\sl B2};
+\draw (4.25,-0.175) node[below=-2bp]{{\tt ujt(,R,P,)}};
+\end{tikzpicture}
+\vspace*{-0.5\baselineskip}
diff --git a/graphics/circuit_macros/doc/ujt.m4 b/graphics/circuit_macros/doc/ujtMan.m4
index aa4e708462..aa4e708462 100644
--- a/graphics/circuit_macros/doc/ujt.m4
+++ b/graphics/circuit_macros/doc/ujtMan.m4
diff --git a/graphics/circuit_macros/dpictools.pic b/graphics/circuit_macros/dpictools.pic
index ead69e973e..8f39057417 100644
--- a/graphics/circuit_macros/dpictools.pic
+++ b/graphics/circuit_macros/dpictools.pic
@@ -3,7 +3,7 @@
# m4 macro NeedDpicTools or the pic statement copy "HOMELIB_/dpictools.pic"
# when HOMELIB_ is defined or, generically, copy "<path>dpictools.pic"
-# Circuit_macros Version 9.2, copyright (c) 2020 J. D. Aplevich under #
+# Circuit_macros Version 9.3, copyright (c) 2020 J. D. Aplevich under #
# the LaTeX Project Public Licence in file Licence.txt. The files of #
# this distribution may be redistributed or modified provided that this #
# copyright notice is included and provided that modifications are clearly #
@@ -149,9 +149,9 @@ define arraymin { { $3 = -1; if "$4" != "" then { $4 = 0 }; m_arrm = 1e25
# for data separated by comma, spaces, or tabs
define copythru {
sh "sed -e 's/^[ ]*/$1(/' -e 's/[ ]*$/)/' -e 's/[, ][ ]*/,/g' $2 \
- > copy_tmp__"
- copy "copy_tmp__"
- sh "rm -f copy_tmp__";}
+ > copythru_tmp__"
+ copy "copythru_tmp__"
+ sh "rm -f copythru_tmp__";}
# randn(array_name,n,mean,stddev)
# Assign n Gaussian random numbers
diff --git a/graphics/circuit_macros/examples/AntiqueClock.m4 b/graphics/circuit_macros/examples/AntiqueClock.m4
index 566fb4c814..814824bee7 100644
--- a/graphics/circuit_macros/examples/AntiqueClock.m4
+++ b/graphics/circuit_macros/examples/AntiqueClock.m4
@@ -2,7 +2,11 @@
# AntiqueClock.m4
gen_init
NeedDpicTools
-iflatex(command "{\sf")
+
+# PSTricks or tikz only:
+ifelse(ifpstricks(T)`'ifpgf(T),T,`
+
+iflatex(`latexcommand({\sf)')
# https://tex.stackexchange.com/questions/236923/generate-analog-clock-with-numbered-face-add-seconds-roman-numerals
@@ -102,7 +106,7 @@ Face: circle thick 0 fill_(1) rad r3 at C
# Text rotation for PSTricks or TikZ
define(`rottext',
- `ifpstricks(`\rput[c]{%g}(0,0)')ifpgf(`\pgftext[rotate=%g]')')
+ `ifpstricks(`\rput[c]{%g}(0,0)',`ifpgf(`\pgftext[rotate=%g]',%g)')')
# Outer numbers
command sprintf("\font\outerfont=cmss12 at %4.2fin",r3-r4)
for mn = -15 to 15 by 5 do { sprintf("rottext{\outerfont %g}",\
@@ -138,5 +142,8 @@ Face: circle thick 0 fill_(1) rad r3 at C
Clock1: AntiqueClock(,,,3)
# Clock2: AntiqueClock(4,50,07,2) at Clock1.e+(1.5,0)
-iflatex(command "}%")
+ iflatex(`latexcommand(})')
+
+',` "AntiqueClock.m4 requires pstricks or pgf" ')
+
.PE
diff --git a/graphics/circuit_macros/examples/Arrester.m4 b/graphics/circuit_macros/examples/Arrester.m4
new file mode 100644
index 0000000000..791a2f2162
--- /dev/null
+++ b/graphics/circuit_macros/examples/Arrester.m4
@@ -0,0 +1,28 @@
+.PS
+# Arrester.m4
+cct_init
+
+divert(-1)
+
+divert(0)dnl
+
+movewid = movewid/2
+ M: arrester
+ {"\tt arr{}ester()" at last [].s below}
+ N: arrester(,D) with .A at M.end+(movewid,0)
+ {"\strut\tt $\cdots$(,D)" at last [].s below}
+ P: arrester(,LD) with .A at N.B+(movewid,0)
+ {"\tt (,LD)" at last [].s below}
+ move; H: arrester(,S)
+ {"\tt (,S)" at last [].s below}
+ move; Q: arrester(,E)
+ {"\tt (,E)" at last [].s below}
+ R: arrester(,ED) with .A at Q.end+(movewid,0)
+ {"\tt $\cdots$(,ED)" at last [].s below}
+ thinlines_
+ Loopover_(`X',
+ `spline <- from X.A up 8bp__ then up 6bp__ right 4bp__; "\sl A" ljust
+ spline <- from X.B up 8bp__ then up 6bp__ left 4bp__; "\sl B" rjust
+ arrow <- from X.G right 12bp__ up 2bp__; "\sl G" ljust',N,R)
+
+.PE
diff --git a/graphics/circuit_macros/examples/Audio.m4 b/graphics/circuit_macros/examples/Audio.m4
index 722a2434d8..662c6d0c99 100644
--- a/graphics/circuit_macros/examples/Audio.m4
+++ b/graphics/circuit_macros/examples/Audio.m4
@@ -46,14 +46,6 @@ L:[
thicklines_
] with .w at last [].e+(0.0,0.5)
[
- M: microphone
- `"\tt microphone"' at M.s+(0,-0.2) #below
- In123(M)
- thinlines_
- arrow <- from M.Circle.n up 0.15 ; "\sl Circle" above
- thicklines_
- ] with .sw at last [].se+(0.4,0)
-[
Z: buzzer
`"\tt buzzer"' at Z.s+(0,-0.2) #below
In123(Z)
@@ -71,6 +63,24 @@ R:[
"\sl Face" above
thicklines_
] with .sw at last [].se+(0.4,0)
+[
+ M: microphone
+ `"\tt microphone"' at M.s+(0,-0.2) #below
+ In123(M)
+ thinlines_
+ arrow <- from M.Circle.n up 0.15 ; "\sl Circle" above
+ thicklines_
+ ] with .sw at last [].se+(0.4,0)
+[
+ M: microphone(A)
+ `"\tt microphone(A)"' at M.s+(0,-0.2) #below
+ thinlines_
+ arrow <- from M.Head.e+(0,0.05) right 0.2; "\sl Head" ljust
+ spline 0.5 <- from M.Head.b down 0.05 right 0.1 then right 0.1
+ "\sl Head.b" ljust
+ arrow <- from M.Stand.s right 0.2; "\sl Stand.s" ljust
+ thicklines_
+ ] with .n at last [].s+(0,-0.05)
[[
E: earphone
`"\tt earphone"' at E.s+(0,-0.2) #below
@@ -89,6 +99,6 @@ R:[
"\sl C" at E.C
thicklines_
] with .sw at last [].se+(0.6,0)
-] with .n at (0.6 between L and R, R.s)+(0,0.1-ifdpic(0.2,0.25))
+] with .n at (0.6 between L and R, R.s)+(0.5,0.1-ifdpic(0.2,0.25))
.PE
diff --git a/graphics/circuit_macros/examples/Conn.m4 b/graphics/circuit_macros/examples/Conn.m4
index 7253d2b313..204ad5d96a 100644
--- a/graphics/circuit_macros/examples/Conn.m4
+++ b/graphics/circuit_macros/examples/Conn.m4
@@ -17,7 +17,7 @@ T:[
"$\vdots$" at (0.5 between last "" and 2nd last "")+(0.15,0.02)
thicklines_
CS1: "`\tt tstrip(U)'" at S1.s+(0,-0.15)
- S2: tstrip(R,5,DO;wid=1.0;ht=0.25) with .sw at S1.se+(0.7,0.15)
+ S2: tstrip(R,5,DO;wid=1.0;ht=0.25) with .sw at S1.se+(0.8,0.15)
thinlines_
arrow <- up 0.2 right 0.1 from S2.T1; "T1" above
arrow <- up 0.2 right 0.1 from S2.T5; "T5" above
@@ -36,7 +36,7 @@ C: [
thicklines_
C2: ccoax(at C1+(0,0.3),F)
`"\tt ccoax(,F)"' ht 11 pt__ wid 0.65 at C2.ne ljust
- ] with .C1.sw at T.S2.se+(0.5,0.0)
+ ] with .C1.sw at T.S2.se+(0.6,0.0)
Y: [
tconn(,O)
@@ -46,24 +46,24 @@ Y: [
{`"\tt (,>)"' at last line.c+(0,-0.2)}
move to P1.end+(0.3,0)
tconn(,>>)
- {`"\tt (,>>)"' at last line.c+(0,-0.2)}
+ {`"\tt (,>{}>)"' at last line.c+(0,-0.2)}
move to P1.start+(0,linewid)
P3: tconn(,<)
{`"\tt tconn(,<)"' at last line.c+(0,-0.2)}
move to P3.end+(0.3,0)
tconn(,<<)
- {`"\tt (,<<)"' at last line.c+(0,-0.2)}
+ {`"\tt (,<{}<)"' at last line.c+(0,-0.2)}
] with .sw at (C.e.x-0.4,T.s.y)
B: [
tbox(V_2)
- `"\tt tbox(V\_2)"' at last [].sw below ljust
- [ left_;
- tbox(V_1,,,<>) ] with .nw at last [].sw+(0,-0.25)
- `"\tt tbox(V\_1,{,},<>)"' at last [].sw below ljust
-# `"\tt left\_"' at last [].sw +(0,-0.2) ljust `"\tt tbox(V\_1)"' ljust
-] with .nw at Y.ne+(0.2,0)
+ { `"\tt tbox(V\_2)"' at last [].sw below ljust }
+ tbox(V_1,,,<) with .sw at last [].se+(0.75,0)
+ { `"\tt tbox(V\_1,{,},<)"' at last [].s below }
+ tbox(V_1,,,<>) with .sw at last [].se+(0.75,0)
+ { `"\tt tbox(V\_1,{,},<>)"' at last [].s below }
+] with .nw at T.sw+(0,-0.2)
.PE
diff --git a/graphics/circuit_macros/examples/Connectors.m4 b/graphics/circuit_macros/examples/Connectors.m4
new file mode 100644
index 0000000000..5c3207c17d
--- /dev/null
+++ b/graphics/circuit_macros/examples/Connectors.m4
@@ -0,0 +1,24 @@
+.PS
+# Connectors
+log_init
+include(ics.m4)
+
+# ArduinoUno
+# "{\sf Arduino Uno Rev 3}" at last [].Connector.s below
+ Ar: ArduinoLeonardo #with .sw at last [].se+(0.25,0)
+ "{\sf Arduino Leonardo}" at last [].Connector.s below
+
+ RPI: RPi with .sw at last [].se+(0.25,0)
+ "{\sf Raspberry Pi 4 GPIO}" at last [].GPIO.s below
+
+ HD: HDMI_micro with .nw at last [].ne+(0.25,0.5)
+ "\sf Micro" rjust at HD.Base.sw+(-2bp__,10bp__) "\sf HDMI" rjust
+
+ S: USB_C_Socket with .sw at (HD.e.x+0.25,RPI.s.y)
+ "\sf USB-C Socket" at S.Base.s below
+ "\sf B12" at S.B12.end above ljust
+ "\sf B1" at S.B1.end above ljust
+ "\sf A1" at S.A1.end above rjust
+ "\sf A12" at S.A12.end above rjust
+
+.PE
diff --git a/graphics/circuit_macros/examples/Fuses.m4 b/graphics/circuit_macros/examples/Fuses.m4
index b308e5aadb..bde24fac3e 100644
--- a/graphics/circuit_macros/examples/Fuses.m4
+++ b/graphics/circuit_macros/examples/Fuses.m4
@@ -4,7 +4,8 @@ cct_init
movewid = 0.25
- {fuse ; {"`{\tt fuse}'" at last line.c+(0,-0.2)}
+ {
+ fuse ; {"`{\tt fuse}'" at last line.c+(0,-0.2)}
move
fuse(,D) ; {"`{\tt fuse(,D)}'" at last line.c+(0,-0.2)}
move
@@ -14,11 +15,10 @@ movewid = 0.25
move
fuse(,S) ; {"`{\tt fuse(,S)}'" at last line.c+(0,-0.2)}
move
- fuse(,HB) ; {"`{\tt fuse(,HB)}'" at last line.c+(0,-0.2)}
+ fuse(,SB) ; {"`{\tt fuse(,SB)}'" at last line.c+(0,-0.2)}
}
move down; right_
- fuse(,HC,0.5,0.3) ; {"`{\tt (,HC,0.5,0.3)}'" at last line.c+(0,-0.25)}
- move
+ {
cbreaker; {"`{\tt cbreaker}'" at last line.c+(0,-0.25)}
move
cbreaker(,R); {"`{\tt cbreaker(,R)}'" at last line.c+(0,-0.25)}
@@ -27,6 +27,13 @@ movewid = 0.25
move
cbreaker(,{,}T); {"`{\tt $\ldots$(,{,}T)}'" at last line.c+(0,-0.25)}
move
- cbreaker(,{,}TS); {"`{\tt $\ldots$(,{,}TS)}'" at last line.c+(0,-0.25)}
+ cbreaker(,{,}TS); {"`{\tt $\ldots$(,{,}TS)}'" at last line.c+(0,-0.25) }
+ }
+ move down; right_
+ {
+ fuse(,HB) ; {"`{\tt fuse(,HB)}'" at last line.c+(0,-0.2)}
+ move
+ fuse(,HC,0.5,0.3) ; {"`{\tt (,HC,0.5,0.3)}'" at last line.c+(0,-0.25)}
+ }
.PE
diff --git a/graphics/circuit_macros/examples/Grounds.m4 b/graphics/circuit_macros/examples/Grounds.m4
index 13b4730b80..e93fadf33c 100644
--- a/graphics/circuit_macros/examples/Grounds.m4
+++ b/graphics/circuit_macros/examples/Grounds.m4
@@ -8,15 +8,18 @@ Ground: ground
GT: ground(,T)
move right sep
GF: ground(,,F)
+sep = 0.55
move right sep
GE: ground(,,E)
move right sep
-B: Here+(0,-0.5) ; {
- "{\tt `ground'}" wid 32bp__ at (Ground,B)
- "{\tt `ground'(,T)}" at (GT,B)+(0,7bp__)
+B: Here+(0,-0.5)
+D: B+(0,11bp__)
+
+ { "{\tt `ground'}" wid 32bp__ at (Ground,B)
+ "{\tt `ground'(,T)}" at (GT,B)+(0,11bp__)
"{\tt (,{,}F)}" at (GF,B)
- "{\tt (,{,}E)}" at (GE,B)}
+ "{\tt (,{,}E)}" at (GE,D)}
GS: ground(,,S)
@@ -28,12 +31,16 @@ GQ: ground(,,Q)
GL: ground(,,L)
move right sep
GP: ground(,,P)
+ move right sep
+GPA: ground(,T,PA)
C: Here+(0,-0.5)
+E: C+(0,11bp__)
"{\tt (,{,}S)}" at (GS,C)
- "{\tt (,{,}S,90)}" at (GS90,C)
+ "{\tt (,{,}S,90)}" at (GS90,E)
"{\tt (,{,}Q)}" at (GQ,C)
- "{\tt (,{,}L)}" at (GL,C)
+ "{\tt (,{,}L)}" at (GL,E)
"{\tt (,{,}P)}" at (GP,C)
+ "{\tt (,T,PA)}" at (GPA,E)
.PE
diff --git a/graphics/circuit_macros/examples/Headers.m4 b/graphics/circuit_macros/examples/Headers.m4
index a4e1abce3b..1c040227e3 100644
--- a/graphics/circuit_macros/examples/Headers.m4
+++ b/graphics/circuit_macros/examples/Headers.m4
@@ -5,7 +5,11 @@ log_init
Header
{"\sl P1" at last [].P1 rjust
`"\tt Header"' at last [].s+(0,-10pt__)
- "\sl P2" at last [].P2 rjust}
+ "\sl P2" at last [].P2 rjust
+ thinlines_
+ arrow <- from last [].Block.ne-(0,0.1) up 0.15 right 0.15
+ "\sl Block" ljust
+ thicklines_ }
Header(2,3,8mm__,10mm__) with .nw at last [].ne+(0.75,-0.05)
{"\sl P1" at last [].P1 rjust
diff --git a/graphics/circuit_macros/examples/MC.m4 b/graphics/circuit_macros/examples/MC.m4
index 6e4eb88ea0..d76016c6e4 100644
--- a/graphics/circuit_macros/examples/MC.m4
+++ b/graphics/circuit_macros/examples/MC.m4
@@ -2,6 +2,7 @@
# MC.m4
cct_init
+MC: [
dv = dimen_*0.6
dh = dimen_*0.4
backup = dimen_/6
@@ -32,4 +33,49 @@ cct_init
source(right_ dimen_,AC); llabel(sprintf("$v_{\char%g}$",64+i))
if i==2 then { Output: dot } else { line down (2-i)*dv }
}}
+]
+
+Three: [
+ dv = dimen_*0.6
+ dh = dimen_
+ define(`swfet',`mosfet(`$1',,dMEDSuBQPy)')
+ define(`swpair',`[ up_
+ BS: swfet(up_ dimen_); { "`$1'" at BS.D-(0,2bp__) rjust }
+ L: line up_ 3*dimen_ from BS.D
+ TS: swfet(up_ dimen_) with .S at Here; { "`$2'" at TS.S+(0,2bp__) rjust }
+ T: TS.D
+ B: BS.S
+ C: L.c
+ ]')
+
+ V1: gap(up_ 5*dimen_,1,A); { "$V_1$" at last arrow.c rjust }
+ line right_ dh/2
+ { C1: capacitor(down_ to (Here,V1.start)); llabel(C_1) }
+ for_(1,3,1,`
+ line right_ dh ifelse(m4x,1,,*5/4)
+ {SP1`'m4x: swpair(S1`'eval(m4x+3),S1`'m4x) with .T at Here
+ dot(at last [].C + (0,(2-m4x)*dh))
+ line right_ (3-m4x)*dh*5/4
+ inductor(right_ dimen_,L); llabel(,L_{1\char`'eval(64+m4x)})
+ line down_ (2-m4x)*dimen_*2/3
+ pushdef(`dimen_',dimen_*1.2) inductor(right_ dimen_*3/4) popdef(`dimen_')
+ line down_ (2-m4x)*dimen_/3
+ M: move right_ dimen_/8
+ line up_ (2-m4x)*dimen_/3
+ pushdef(`dimen_',dimen_*1.2) inductor(right_ dimen_*3/4) popdef(`dimen_')
+ line up_ (2-m4x)*dimen_*2/3
+ inductor(right_ dimen_,L); llabel(,L_{2\char`'eval(64+m4x)})
+ line right_ dimen_/8+(m4x-1)*dh*5/4
+ dot
+ SP2`'m4x: swpair(S2`'eval(m4x+3),S2`'m4x) with .C at Here+(0,(m4x-2)*dh) }
+ ')
+ "$T_r$" at M.c+(0,dimen_/2)
+ line from V1.start to SP13.B
+ line from SP21.B to SP23.B+(dh*3/4,0)
+ { C2: capacitor(up_ to (Here,V1.end)); llabel(,,C_2) }
+ line right_ dh/2
+ gap(up_ 5*dimen_,1,A); { "$V_2$" at last arrow.c ljust }
+ line to SP21.T chop dotrad_ chop 0
+
+] with .nw at MC.sw+(0,-0.2)
.PE
diff --git a/graphics/circuit_macros/examples/Makefile b/graphics/circuit_macros/examples/Makefile
index 92968df523..d729596a17 100644
--- a/graphics/circuit_macros/examples/Makefile
+++ b/graphics/circuit_macros/examples/Makefile
@@ -27,18 +27,15 @@ LIBDIR = ..
# The dpic processor:
PIC = dpic -p
-#PIC = $$HOME/dpic/bu*/p2c/ftp/dpic -p
-#PIC = /cygdrive/d/Dwight/dpic/p2c/Windows/dpic -p
-#PIC = dpic -1 -p
-#PIC = $$HOME/dpic/build/test/dpic -p
+#PIC = $$HOME/dpic/build/p2c/ftp/dpic -p
#PIC = $$HOME/dpic/dev/p2c/ftp/dpic -p
-#PIC = $$HOME/tmp/dpic -p
#PIC = $$HOME/dpic/bison/dpic -p
#PIC = $$HOME/dpic/bdev/dpic -p
CONFIGFILE = pstricks.m4
-# This is for testing the mingw version of dpic:
+# Testing the mingw version of dpic:
+#PIC = $$HOME/dpic/bison/distsrc/Windows/dpic -p
#CUSTOM=windows.m4
# Uncomment for gpic. Use gpic or pic as applicable on your machine:
@@ -61,8 +58,9 @@ DOC = examples
PICS = \
ABlogix.tex Adder.tex Alogix.tex AmpTable.tex Antennas.tex \
AntiqueClock.tex Audio.tex Bip.tex Btree.tex Buttons.tex Byte.tex \
- CanLogic.tex CctTable.tex Conn.tex Contacts.tex Contact.tex control.tex \
- Counting.tex Crossbar.tex Crow.tex csc.tex Csource.tex Decoder.tex \
+ CanLogic.tex CctTable.tex Conn.tex Connectors.tex \
+ Contacts.tex Contact.tex control.tex Counting.tex Crossbar.tex Crow.tex \
+ csc.tex Csource.tex Decoder.tex \
Demultiplexer.tex diamond.tex Dini.tex Diodes.tex Drive.tex Emarrows.tex \
ex00.tex ex01.tex ex02.tex ex03.tex ex04.tex ex05.tex ex06.tex ex08.tex \
ex09.tex ex10.tex ex11.tex ex12.tex ex15.tex ex16.tex ex17.tex ex18.tex \
@@ -111,7 +109,7 @@ BS = tr '|' '\134'
make $*.tex
printf "|documentclass[11pt]{article}\n\
|usepackage{times,pstricks,boxdims,graphicx,pst-grad,pst-slpe}\n\
-|usepackage[amssymb,Gray,thinqspace,textstyle]{SIunits}\n\
+|usepackage{siunitx}\n\
|setlength{|textwidth}{28cm}|setlength{|textheight}{28cm}\n\
|setlength{|oddsidemargin}{0pt}|setlength{|evensidemargin}{0pt}\n\
|setlength{|hoffset}{-1cm}\n\
@@ -174,10 +172,10 @@ BS = tr '|' '\134'
$(DOC).pdf: clean pdfmode $(DOC).frp
touch $(DOC).dim
rm -f $(BOXDIMS) $(BOXPICS)
- make PIC="dpic -g" CONFIGFILE=pgf.m4 DIMFILE=$(DOC).dim pics
+ make PIC="$(PIC) -g" CONFIGFILE=pgf.m4 DIMFILE=$(DOC).dim pics
pdflatex $(DOC)
rm -f $(BOXDIMS) $(BOXPICS)
- make PIC="dpic -g" CONFIGFILE=pgf.m4 DIMFILE=$(DOC).dim pics
+ make PIC="$(PIC) -g" CONFIGFILE=pgf.m4 DIMFILE=$(DOC).dim pics
pdflatex $(DOC)
optpdf $(DOC).pdf
@@ -202,14 +200,14 @@ $(DOC).dvi: $(DOC).frs
latex $(DOC)
$(DOC).frs: $(DOC).tex files.tex header.tex psmode
- make PIC="dpic -p" CONFIGFILE=pstricks.m4 DIMFILE=$(DOC).dim pics
+ make PIC="$(PIC) -p" CONFIGFILE=pstricks.m4 DIMFILE=$(DOC).dim pics
cp $(LIBDIR)/doc/Version.tex .
latex $(DOC)
rm -f $(DOC).dvi
touch $(DOC).frs
$(DOC).frp: $(DOC).tex files.tex header.tex pdfmode
- make PIC="dpic -g" CONFIGFILE=pgf.m4 DIMFILE=$(DOC).dim pics
+ make PIC="$(PIC) -g" CONFIGFILE=pgf.m4 DIMFILE=$(DOC).dim pics
cp $(LIBDIR)/doc/Version.tex .
pdflatex $(DOC)
rm -f $(DOC).pdf
@@ -235,7 +233,7 @@ echopics:
clobber: clean
rm -f *.ps
- -@for dir in mf mpost pdflatex xfig psfrag pgf svg dev test; \
+ -@for dir in mf mpost pdflatex xfig psfrag svg dev test; \
do (if test -d $$dir ; then cd $$dir; make clobber; fi) ; done
rm -f *.warn
rm -f examples.pdf
diff --git a/graphics/circuit_macros/examples/Pconn.m4 b/graphics/circuit_macros/examples/Pconn.m4
index fbda5cc2e7..cb8afd0875 100644
--- a/graphics/circuit_macros/examples/Pconn.m4
+++ b/graphics/circuit_macros/examples/Pconn.m4
@@ -19,27 +19,23 @@ P1: [
arrow from G.w to C1.G.e
arrow from G.e to C2.G.w
`"\tt (,AF)"' at last [].s below
- C03: pconnex(,AC) with .w at C2.e+(0.2,0)
+ C03: pconnex(,AC) with .w at C2.e+(0.25,0)
`"\tt (,AC)"' at last [].s below
C3: pconnex(,ACF) with .w at last [].e+(0.2,0)
`"\tt (,ACF)"' at last [].s below
- C5: pconnex(U,D) with .w at last [].e+(0.2,0)
+ C5: pconnex(U,D) with .w at last [].e+(0.25,0)
`"\tt (U,D)"' at last [].s below
- C6: pconnex(U,DF) with .w at last [].e+(0.2,0)
+ C6: pconnex(U,DF) with .w at last [].e+(0.25,0)
`"\tt (U,DF)"' at last [].s below
- C7: pconnex(U,J) with .w at last [].e+(0.2,0)
+ C7: pconnex(U,J) with .w at last [].e+(0.25,0)
`"\tt (U,J)"' at last [].s below
- C8: pconnex(U,JF) with .w at last [].e+(0.2,0)
+ C8: pconnex(U,JF) with .w at last [].e+(0.25,0)
`"\tt (U,JF)"' at last [].s below
]
P2: [
- C4: pconnex(,P)
- `"\tt (,P)"' at last [].s below
- C11: pconnex(,PF) with .w at last [].e+(0.2,0)
- `"\tt (,PF)"' at (C11,last "") below
- C9: pconnex(,G) with .w at last [].e+(0.2,0)
+ C9: pconnex(,G) #with .w at last [].e+(0.2,0)
`"\tt (,G)"' at last [].s below
C91: pconnex(,GF) with .w at last [].e+(0.2,0)
`"\tt (,GF)"' at last [].s below
@@ -47,6 +43,15 @@ P2: [
`"\tt (L,GF)"' at last [].s below
C10: pconnex(,GC) with .w at last [].e + (0.2,0)
`"\tt (,GC)"' ht 11pt__ at last [].s below
-] with .nw at P1.C1.sw + (0,-0.25)
+ C12: pconnex(,GCF) with .w at last [].e + (0.2,0)
+ `"\tt (,GCF)"' ht 11pt__ at last [].s below
+] with .nw at P1.C1.sw + (0,-0.35)
+
+P3: [
+ C4: pconnex(,P)
+ `"\tt (,P)"' at last [].s below
+ C11: pconnex(,PF) with .w at last [].e+(0.2,0)
+ `"\tt (,PF)"' at (C11,last "") below
+] with .nw at P2.C9.sw + (0,-0.35)
.PE
diff --git a/graphics/circuit_macros/examples/README-examples b/graphics/circuit_macros/examples/README-examples
index 7585e3dc77..5561e4d3fc 100644
--- a/graphics/circuit_macros/examples/README-examples
+++ b/graphics/circuit_macros/examples/README-examples
@@ -8,7 +8,8 @@ of unix, linux, cygwin, djgpp, ...):
2. In this directory, type "make". If your installed dpic is the
Mingw version included in the dpic distribution, (a) edit the
file windows.m4 to point to your installation folder, and (b) uncomment
- the CUSTOM= line in the Makefile, or type "make CUSTOM=windows.m4".
+ the CUSTOM=windows.m4 line in the Makefile, or type
+ "make CUSTOM=windows.m4".
To test one of the diagrams, say ex01.m4, type one of the following
(and have a look at the comments at the top of the Makefile):
diff --git a/graphics/circuit_macros/examples/Rectifiers.m4 b/graphics/circuit_macros/examples/Rectifiers.m4
index e24315d0fd..23d544f812 100644
--- a/graphics/circuit_macros/examples/Rectifiers.m4
+++ b/graphics/circuit_macros/examples/Rectifiers.m4
@@ -59,19 +59,22 @@ Threephase: [ linethick_(1)
]
Cct3:[
- No: dot; {"$N_o$" below rjust }
- { inductor(to Here+(Rect_(dimen_,60)),W); E2: "$e_2$" ljust }
- { inductor(to Here+(Rect_(dimen_,-60)),W); E3: "$e_3$" ljust }
- { inductor(from No-(dimen_,0) to No,W); E1: "$e_1$" above at last line.start }
+ No: dot; "$N_o$" at last [].s below rjust
+ E2: No+(Rect_(dimen_,60))
+ E3: No+(Rect_(dimen_,-60))
+ E1: No+(-dimen_,0)
+ inductor(from No to E2,W); round; "$e_2$" ljust
+ inductor(from No to E3,W); round; "$e_3$" ljust
+ inductor(from E1 to No,W); round(at E1); "$e_1$" at E1 above
D3: diode(down_ from E3); b_current(i_3,rjust); llabel(,,D_3)
- line from E1 to (E1,D3.start)
- D1: diode(down_); b_current(i_1,rjust); llabel(,,D_1)
- line from E2 left E2.x-E1.x+dimen_/3 then down E2.y-E3.y \
- then to 0.5 between D1.start and D3.start
+ line from E1 to (E1.x,D3.start.y+dimen_/3) then right_ (E3.x-E1.x)/2 \
+ then down_ dimen_/3
+ D1: diode(down_); b_current(i_1,rjust); llabel(,,D_1); dot
+ line from E2 left_ E2.x-E1.x+dimen_/3 then down_ E2.y-E3.y \
+ then to 2 between D3.start and D1.start; corner
D2: diode(down_); b_current(i_2,rjust); llabel(,,D_2)
- { line from D1.end to D3.end }
- dot
- arrowline(down elen_/2); rlabel(,i_L)
+ { line from D2.end to D3.end }
+ arrowline(from D1.end down_ elen_/2); rlabel(,i_L)
resistor(right_ elen_); rlabel(+,e_L,-); llabel(,R)
line to (Here,No) then to No
] with .e at Threephase.w-(0.5,0)
diff --git a/graphics/circuit_macros/examples/SampleFlow.m4 b/graphics/circuit_macros/examples/SampleFlow.m4
new file mode 100644
index 0000000000..f8d73ca203
--- /dev/null
+++ b/graphics/circuit_macros/examples/SampleFlow.m4
@@ -0,0 +1,35 @@
+.PS
+# SampleFlow.m4
+darrow_init
+
+boxwid = 1.9
+boxht = 1.0
+linethick = 1.2
+
+ define(`dlthick',0.25)
+ define(`dfillcolor',`0.7,0.7,0.7')
+
+ define rbox {box rad boxht/10}
+ define offset { with .nw at last box.se+(-0.15,-0.125)}
+ define indent { at last box.w+(0.1,0)}
+ define connect {
+ { Dline(from 2nd last box.s to (2nd last box,last box),E;ends=!-)
+ dleft
+ darrow(to last box.w) } }
+
+ command "{\sf\huge"
+
+ B1: rbox
+ { "Sample" ljust indent "Acquisition" ljust }
+ B2: rbox offset
+ {"Sample" ljust indent "Checking" ljust }
+ connect
+ B3: rbox offset
+ {"Dimensionality" ljust indent "Sample Check" ljust }
+ connect
+ B4: rbox offset
+ {"Sample" ljust indent "Synthesis" ljust "Techniques" ljust }
+ connect
+
+ command "}%"
+.PE
diff --git a/graphics/circuit_macros/examples/Sources.m4 b/graphics/circuit_macros/examples/Sources.m4
index a70cea1113..8a4bab9bc6 100644
--- a/graphics/circuit_macros/examples/Sources.m4
+++ b/graphics/circuit_macros/examples/Sources.m4
@@ -21,7 +21,8 @@ define(`NL',`; move down $1; right_')
{source(,X) ; move ; "`source(,X)'" ljust} NL
{source(,F) ; move ; "`source(,F)'" ljust} NL
{source(,G) ; move ; "`source(,G)'" ljust} NL
- {source(,Q) ; move ; "`source(,Q)'" ljust}
+ {source(,Q) ; move ; "`source(,Q)'" ljust} NL(0.3)
+ {proximity ; move ; "`\shortstack[l]{proximity\\ = consource(,P)}'" ljust}
}
move right_ 2.0
{
@@ -34,8 +35,8 @@ define(`NL',`; move down $1; right_')
{source(,SCr) ; move ; "`source(,SCr)'" ljust} NL
{source(,T) ; move ; "`source(,T)'" ljust} NL
{source(,L) ; move ; "`source(,L)'" ljust} NL
- {source(,B) ; move ; "`source(,B)'" ljust} NL(moveht*0.8)
- {nullator ; move ; "`nullator'" ljust} NL(moveht*0.6)
+ {source(,B) ; move ; "`source(,B)'" ljust} NL
+ {nullator ; move ; "`nullator'" ljust} NL(moveht*0.8)
{norator ; move ; "`norator'" ljust}
}
move right_ 2.0
@@ -49,7 +50,7 @@ define(`NL',`; move down $1; right_')
{source(,SE) ; move ; "`source(,SE)'" ljust} NL
{consource(,V) ; move ; "`consource(,V)'" ljust} NL(0.32)
{consource(,v) ; move ; "`consource(,v)'" ljust} NL(0.3)
- {battery ; move ; "`battery'" ljust} NL
+ {battery ; move ; "`battery'" ljust} NL(0.3)
{battery(,3,R) ; move ; "`battery(,3,R)'" ljust}
iflatex(`ifpsfrag(,`latexcommand(})')')
diff --git a/graphics/circuit_macros/examples/Switches.m4 b/graphics/circuit_macros/examples/Switches.m4
index d8262be92d..46b3f9240d 100644
--- a/graphics/circuit_macros/examples/Switches.m4
+++ b/graphics/circuit_macros/examples/Switches.m4
@@ -2,38 +2,40 @@
# Switches.m4
cct_init
+define(`Below',`at last [].s+(0,-10bp__)')
+
movewid = 0.25
# Row 1
right_; {
- lswitch; {S:"\tt ls{}witch" at last [].s+(0,-10bp__)}
+ lswitch; {S:"\tt ls{}witch" Below}
move right_
- lswitch(,,O); {"\tt (,,O)" at (last [],S)}
+ lswitch(,,O); {"\tt (,{,}O)" at (last [],S)}
move right_
- lswitch(,,C); {"\tt (,,C)" at (last [],S)}
+ lswitch(,,C); {"\tt (,{,}C)" at (last [],S)}
move right_
- lswitch(,,DA); {"\tt (,,DA)" at (last [],S)}
+ lswitch(,,DA); {"\tt (,{,}DA)" at (last [],S)}
move right_
- lswitch(,,dDO); {"\tt (,,dDO)" at (last [],S)}
+ lswitch(,,dDO); {"\tt (,{,}dDO)" at (last [],S)}
move right_
- lswitch(,,uDC); {"\tt (,,uDC)" at (last [],S)}
+ lswitch(,,uDC); {"\tt (,{,}uDC)" at (last [],S)}
}
# Row 2
move down; right_; {
- lswitch(,,K); {S:"\tt (,,K)" at last [].s+(0,-10bp__)}
+ lswitch(,,K); {S:"\tt (,{,}K)" Below}
move right_
- lswitch(,,KD); {"\tt (,,KD)" at (last [],S)}
+ lswitch(,,KD); {"\tt (,{,}KD)" at (last [],S)}
move right_
- lswitch(,,KOD); {"\tt (,,KOD)" at (last [],S)}
+ lswitch(,,KOD); {"\tt (,{,}KOD)" at (last [],S)}
move right_
- lswitch(,,KCD); {"\tt (,,KCD)" at (last [],S)}
+ lswitch(,,KCD); {"\tt (,{,}KCD)" at (last [],S)}
move right_
bswitch; {"\tt `bswitch'" at (last [],S)}
move right_
- bswitch(,,C); {"\tt (,,C)" at (last [],S)}
+ bswitch(,,C); {"\tt (,{,}C)" at (last [],S)}
}
# Row 3
move down; right_; {
- D: dswitch(,,); {S: "\tt ds{}witch(,{},)" at last [].s+(0,-10bp__)}
+ D: dswitch(,,); {S: "\tt ds{}witch(,{},)" Below}
thinlines_
{ spline <- from 0.25 along_(D) up 0.1 then up 0.05 left 0.1
{"\tt W" rjust}
@@ -41,7 +43,7 @@ movewid = 0.25
{"\tt B" rjust }}
thicklines_
move right_
- D: dswitch(,,WdBK); {"\tt (,,WdBK)" at (last [],S)+(0,-4bp__)}
+ D: dswitch(,,WdBK); {"\tt (,{,}WdBK)" at (last [],S)+(0,-4bp__)}
thinlines_
{ spline <- from tr_xy(0,-2) up 0.1 then up 0.10 left 0.1
{"\tt dB" rjust}
@@ -49,69 +51,81 @@ movewid = 0.25
{"\tt K" above }}
thicklines_
move right_
- dswitch(,,WBmdDK); {"\tt (,,WBmdDK)" at (last [],S)}
+ dswitch(,,WBmdDK); {"\tt (,{,}WBmdDK)" at (last [],S)}
move right_
- dswitch(,,WBKTr); {"\tt (,,WBKTr)" at (last [],S)}
+ dswitch(,,WBKTr); {"\tt (,{,}WBKTr)" at (last [],S)}
move right_
- dswitch(,,WdBL); {"\tt (,,WdBL)" at (last [],S+(0,-4bp__))}
+ dswitch(,,WdBL); {"\tt (,{,}WdBL)" at (last [],S+(0,-4bp__))}
move right_
- dswitch(,,WBCo); {"\tt (,,WBCo)" at (last [],S)}
+ dswitch(,,WBCo); {"\tt (,{,}WBCo)" at (last [],S)}
}
# Row 4
move down; right_; {
- dswitch(,,WBKCo); {S: "\tt (,,WBKCo)" at last [].s+(0,-10bp__)}
+ dswitch(,,WBKCo); {S: "\tt (,{,}WBKCo)" Below}
move right_
- dswitch(,,WBCb); {"\tt (,,WBCb)" at (last [],S)}
+ dswitch(,,WBCb); {"\tt (,{,}WBCb)" at (last [],S)}
move right_
- dswitch(,,WBDI); {"\tt (,,WBDI)" at (last [],S)}
+ dswitch(,,WBDI); {"\tt (,{,}WBDI)" at (last [],S)}
move right_
- dswitch(,,WBSd); {"\tt (,,WBSd)" at (last [],S)}
+ dswitch(,,WBSd); {"\tt (,{,}WBSd)" at (last [],S)}
move right_
- dswitch(,,WBFDI); {"\tt (,,WBFDI)" at (last [],S)}
+ dswitch(,,WBFDI); {"\tt (,{,}WBFDI)" at (last [],S)}
move right_
- dswitch(,,WBFSd); {"\tt (,,WBFSd)" at (last [],S)}
+ dswitch(,,WBFSd); {"\tt (,{,}WBFSd)" at (last [],S)}
}
# Row 5
move down moveht*5/4; right_; {
- dswitch(,,WBTh); {S: "\tt (,,WBTh)" at last [].s+(0,-10bp__)}
+ dswitch(,,WBTh); {S: "\tt (,{,}WBTh)" Below}
move right_
- dswitch(,,WBKC); {"\tt (,,WBKC)" at (last [],S)}
+ dswitch(,,WBKC); {"\tt (,{,}WBKC)" at (last [],S)}
move right_
- dswitch(,,WBM); {"\tt (,,WBM)" at (last [],S)}
+ dswitch(,,WBM); {"\tt (,{,}WBM)" at (last [],S)}
move right_
- dswitch(,,WBCO); {"\tt (,,WBCO)" at (last [],S)}
+ dswitch(,,WBCO); {"\tt (,{,}WBCO)" at (last [],S)}
move right_
- dswitch(,,WBMP); {"\tt (,,WBMP)" at (last [],S)}
+ dswitch(,,WBMP); {"\tt (,{,}WBMP)" at (last [],S)}
move right_
- dswitch(,,WBoKCP); {"\tt (,,WBoKCP)" at (last [],S)}
+ dswitch(,,WBoKCP); {"\tt (,{,}WBoKCP)" at (last [],S)}
}
# Row 6
move down moveht*5/4; right_; {
- dswitch(,,WBCY); {S: "\tt (,,WBCY)" at last [].s+(0,-10bp__)}
+ dswitch(,,WBCY); {S: "\tt (,{,}WBCY)" Below}
move right_
- dswitch(,,WBCZ); {"\tt (,,WBCZ)" at (last [],S)}
+ dswitch(,,WBCZ); {"\tt (,{,}WBCZ)" at (last [],S)}
move right_
- dswitch(,,WBCE); {"\tt (,,WBCE)" at (last [],S)}
+ dswitch(,,WBCE); {"\tt (,{,}WBCE)" at (last [],S)}
move right_
- dswitch(,,WBRH); {"\tt (,,WBRH)" at (last [],S)}
+ dswitch(,,WBRH); {"\tt (,{,}WBRH)" at (last [],S)}
move right_
- dswitch(,,WBRdH); {"\tt (,,WBRdH)" at (last [],S)}
+ dswitch(,,WBRdH); {"\tt (,{,}WBRdH)" at (last [],S)}
move right_
- dswitch(,,WBRHH); {"\tt (,,WBRHH)" at (last [],S)}
+ dswitch(,,WBRHH); {"\tt (,{,}WBRHH)" at (last [],S)}
}
# Row 7
+ move down moveht; right_; {
+ move down_ 2bp__; right_
+ dswitch(,,WBPr); {S: "\tt (,{,}WBPr)" Below}
+ move right_
+ dswitch(,,WBPrT); {S: "\tt (,{,}WBPrT)" Below}
+# move right_
+# Proxim; {S: "\tt Pro{}xim" Below}
+# move right_
+# Magn; {S: "\tt Mag{}n" Below}
+ move down_ 6bp__ then right_
+ dswitch(,,WBPrM); {S: "\tt (,{,}WBPrM)" Below}
+ }
+# Row 8
move down; right_; {
- dswitch(,,WBMMR); {S: "\tt (,,WBMMR)" at last [].s+(0,-10bp__)}
+ dswitch(,,WBMMR); {S: "\tt (,{,}WBMMR)" Below}
move right_
- dswitch(,,WBMM); {"\tt (,,WBMM)" at (last [],S)}
+ dswitch(,,WBMM); {"\tt (,{,}WBMM)" at (last [],S)}
move right_
- dswitch(,,WBMR); {"\tt (,,WBMR)" at (last [],S)}
+ dswitch(,,WBMR); {"\tt (,{,}WBMR)" at (last [],S)}
move right_
- dswitch(,,WBEL); {"\tt (,,WBEL)" at (last [],S)}
+ dswitch(,,WBEL); {"\tt (,{,}WBEL)" at (last [],S)}
move right_
- dswitch(,,WBLE); {"\tt (,,WBLE)" at (last [],S)}
+ dswitch(,,WBLE); {"\tt (,{,}WBLE)" at (last [],S)}
move right_
- dswitch(,,WBoKEL); {"\tt (,,WBoKEL)" at (last [],S)}
+ dswitch(,,WBoKEL); {"\tt (,{,}WBoKEL)" at (last [],S)}
}
-
.PE
diff --git a/graphics/circuit_macros/examples/Tubediags.m4 b/graphics/circuit_macros/examples/Tubediags.m4
index e07336e4e3..b49f0ffa8e 100644
--- a/graphics/circuit_macros/examples/Tubediags.m4
+++ b/graphics/circuit_macros/examples/Tubediags.m4
@@ -4,7 +4,7 @@
cct_init
include(tubedefs.m4)
-iflatex(`command "{\sf"')
+iflatex(`latexcommand({\sf)')
Overall:[
@@ -366,5 +366,5 @@ PO: dot
#showbox_
#print last [].wid,last [].ht
-iflatex(command "}")
+iflatex(latexcommand(}))
.PE
diff --git a/graphics/circuit_macros/examples/Variable.m4 b/graphics/circuit_macros/examples/Variable.m4
index 6fac01e164..e52e30913d 100644
--- a/graphics/circuit_macros/examples/Variable.m4
+++ b/graphics/circuit_macros/examples/Variable.m4
@@ -3,11 +3,11 @@
cct_init
define(`elen_',dimen_); down_
-[ { variable(`capacitor') }; move right
- { variable(`resistor',uN) }; move right
- { variable(`capacitor(,C)') }; move right
- { variable(`inductor') }; move right
- { variable(`inductor(,W)') }
+[ { variable(`resistor',A) }; {"A" at last line.end below}; move right
+ { variable(`resistor',N) }; {"N" at last line.end below}; move right
+ { variable(`resistor',uN) }; {"uN" at last line.end below}; move right
+ { variable(`resistor',NN) }; {"uN" at last line.end below}; move right
+ { variable(`resistor',uNN) }; {"uNN" at last line.end below}; #; move right
]
[
skp = 0.4
diff --git a/graphics/circuit_macros/examples/debug2.m4 b/graphics/circuit_macros/examples/debug2.m4
index eccd9d38bb..6b6edf77ba 100644
--- a/graphics/circuit_macros/examples/debug2.m4
+++ b/graphics/circuit_macros/examples/debug2.m4
@@ -20,9 +20,9 @@
% If boxdims.sty is not found, then either it has not been copied to
% where latex can find it or the latex filename database has not been
% updated correctly. Instructions for the latter depend on the operating
-% system and may invlove commands texhash, mktexlsr, tlmgr, possibly preceded
-% by sudo, or (for MiKTeX) clicking on the Refresh FNDB button. See steps 3
-% and 4 (ignore 1 and 2) at
+% system and may involve commands texhash, mktexlsr, tlmgr, possibly preceded
+% by sudo, or (for MiKTeX) clicking on the Refresh FNDB button.
+% See Manual Installation, steps 3 and 4 (ignore 1 and 2) at
% https://en.wikibooks.org/wiki/LaTeX/Installing_Extra_Packages
%
% On my Ubuntu machine, boxdims.sty is in
diff --git a/graphics/circuit_macros/examples/examples.pdf b/graphics/circuit_macros/examples/examples.pdf
index 2f31b4f030..d59436e0a3 100644
--- a/graphics/circuit_macros/examples/examples.pdf
+++ b/graphics/circuit_macros/examples/examples.pdf
Binary files differ
diff --git a/graphics/circuit_macros/examples/examples.tex b/graphics/circuit_macros/examples/examples.tex
index 0e483fa094..e2f90fc585 100644
--- a/graphics/circuit_macros/examples/examples.tex
+++ b/graphics/circuit_macros/examples/examples.tex
@@ -28,20 +28,17 @@
Most of the examples can be processed using either dpic~-p, dpic~-g,
or gpic~-t, but the possibility of other postprocessing has meant that
sometimes the source is slightly more complicated than it would be if
- only one workflow had been assumed. The most simplicity and elegance
- is achieved by sticking to one pic interpreter and one postprocessor.
+ only one workflow had been assumed. Some of the examples require dpic.
+ The most simplicity and elegance is achieved by sticking to one pic
+ interpreter and one postprocessor.
- A few of these examples are also found in the manual
- Circuit\_macros.pdf. There are other examples in the examples directory
- that are not included in this document. To process {\sl file}.m4, type, for
- example, "make {\sl file}.pdf."
+ This document duplicates a few diagrams from the manual
+ Circuit\_macros.pdf. There are also a few files in the
+ examples directory that are not included in this document. To process
+ {\sl file}.m4, type, for example, "make {\sl file}.pdf."
-% The tables of elements attempt to illustrate each macro option
-% at least once but the number of option combinations is huge so these
-% examples are not exhaustive.
-
- A few of the examples following the circuits test some of the boundaries
- of what macros and the pic language can do.
+% Some of the boundaries of what macros and the pic language can do are
+% tested toward the end of the following examples.
\input files
\endinput
diff --git a/graphics/circuit_macros/examples/files.tex b/graphics/circuit_macros/examples/files.tex
index 3f14c21bdb..334c7657f6 100644
--- a/graphics/circuit_macros/examples/files.tex
+++ b/graphics/circuit_macros/examples/files.tex
@@ -140,6 +140,12 @@
}
\bfig{
+ \centerline{\getpic{Connectors}}
+ \caption{Some connectors with simple geometry and lists of labels
+ \src{Connectors.m4}.}
+ }
+
+\bfig{
\centerline{\getpic{fet}}
\caption{FETs, showing programmable components and example customizations
\src{fet.m4}.}
@@ -247,7 +253,7 @@
\bfig{
\centerline{\getpic{MC}}
- \caption{A three-phase switched AC-AC converter
+ \caption{A three-phase switched AC-AC converter and a DC-DC converter
\src{MC.m4}.}
}
@@ -666,6 +672,7 @@
\src{Btree.m4}.}
}
+\ifmpost\else% Tex capacity exceeded at this point under metapost
\bfig{
\centerline{\getpic{Ttree}}
\caption{Another tree
@@ -710,5 +717,6 @@
\src{Inclpdf.m4}.}
}
\fi\fi\fi\fi\fi
+\fi % ifmpost
\end{document}
diff --git a/graphics/circuit_macros/examples/ics.m4 b/graphics/circuit_macros/examples/ics.m4
index 023b0d2a56..15e0f05bb8 100644
--- a/graphics/circuit_macros/examples/ics.m4
+++ b/graphics/circuit_macros/examples/ics.m4
@@ -1,26 +1,26 @@
divert(-1)
- Macros defining some integrated circuits
+ Macros defining some integrated circuits and connectors
-define(`lg_pinsep',3*L_unit) logic pin separation in logic units
-define(`lg_chipwd',18*L_unit) default chip width
-
- `Chip outline sizes'
-define(`chip_gen',` box invis wid lg_chipwd ht lg_pinsep*eval(`$1'/2+1)
- arcd(last box.n, lg_pinsep/2, 180, 360)
- { line to last box.ne chop -linewid bp__/2 }
- { line from last arc.start to last box.nw chop -linewid bp__/2 }
- line from last box.nw to last box.sw then to last box.se then to last box.ne
- ')
+ `DIP_chip_outline( pin count, wid )'
+define(`DIP_chip_outline',
+ `[ define(`m4chgw',`ifelse(`$2',,(18*L_unit),`$2')')dnl
+ Chip: box invis wid m4chgw ht lg_pinsep*eval((`$1')/2+1)
+ arcd(last box.n, lg_pinsep/2, 180, 360)
+ { line to last box.ne chop -linewid bp__/2 }
+ { line from last arc.start to last box.nw chop -linewid bp__/2 }
+ line from last box.nw to last box.sw then to last box.se then to last box.ne
+ `$3']')
`A sequence of pins along the east or west side of a chip:
- lg_pinseq(initial pin no,final pin no,
- e|w,initial offset,pinnum_root,Labelroot,[not])'
-lg_pinseq(1,8,w)
+ lg_pinseq(initial pin no, final pin no,
+ e|w, initial offset, pinnum_root, Labelroot, [N])'
+ `e.g., lg_pinseq(1,8,w)'
define(`lg_pinseq',`for_($1,$2,1,
- `lg_pin( Chip.s`$3'+(0,eval($4+m4x)*lg_pinsep),
+ `lg_pin( Chip.s`$3'+(0,($4+m4x)*lg_pinsep),
$6`'m4x,Pin`'eval($5`'m4x),`$3'`$7',eval($5`'m4x))') ')
+
define(`ic6116',`[ Chip: box wid_ lg_chipwd ht_ 15*lg_pinsep
lg_pin(Chip.sw_+(0,lg_pinsep),GND,Pin12,w,12)
lg_pin(Chip.sw_+(0,2*lg_pinsep),lg_bartxt(CS),Pin18,wN,18)
@@ -113,4 +113,163 @@ define(`icVS1053',`[ Chip: chip_gen(32)
SDCD,RX,TX,7,6,5,4,3,2,1,0,GND,3V3,AGND,MIC-,MIC+)
`$1']')
+ `ArduinoUno( wid,ht,pinlen )'
+define(`ArduinoUno',`[
+ define(`m4bwid',`ifelse(`$1',,`24*L_unit',`$1')')dnl
+ define(`m4bht',`ifelse(`$2',,`20*lg_pinsep',`$2')')dnl
+#
+ command "{\small\sf"
+ Connector: box wid m4bwid ht m4bht
+#
+ plen = ifelse(`$4',,`2*L_unit',`$4')
+#
+Loopover_(`x',`ifelse(x,nul,,
+ `Pin`'eval(5+m4Lx): line left_ plen from Connector.nw-(0,(5+m4Lx)*lg_pinsep)
+ { "x" ljust at last line.start }')',
+ IOREF, RESET,`$+$`'3V3',`$+$`'5V', GND, GND, VIN,
+ nul, A0, A1, A2, A3, A4, A5)
+#
+Loopover_(`x',`ifelse(x,nul,,
+ `Pin`'eval(22-m4Lx): line right_ plen from Connector.ne-(0,m4Lx*lg_pinsep)
+ { "x" rjust at last line.start }')',
+ SCL, SDA, AREF, GND, D13, D12, \char126 D11, \char126 D10, \char126 D9, D8,
+ nul, D7, \char126 D6, \char126 D5, D4, \char126 D3, D2, TX D1, RX D0)
+#
+ command "}"
+ `$4'] ')
+
+ `ArduinoLeonardo( wid,ht,pinlen )'
+define(`ArduinoLeonardo',`[
+ define(`m4bwid',`ifelse(`$1',,`24*L_unit',`$1')')dnl
+ define(`m4bht',`ifelse(`$2',,`20*lg_pinsep',`$2')')dnl
+#
+ command "{\small\sf"
+ Connector: box wid m4bwid ht m4bht
+#
+ plen = ifelse(`$4',,`2*L_unit',`$4')
+#
+Loopover_(`x',`ifelse(x,nul,,
+ `Pin`'eval(5+m4Lx): line left_ plen from Connector.nw-(0,(5+m4Lx)*lg_pinsep)
+ { "x" ljust at last line.start }')',
+ IOREF, RESET,`$+$`'3V3',`$+$`'5V', GND, GND, VIN,
+ nul, A0, A1, A2, A3, A4, A5)
+#
+Loopover_(`x',`ifelse(x,nul,,
+ `Pin`'eval(22-m4Lx): line right_ plen from Connector.ne-(0,m4Lx*lg_pinsep)
+ { "x" rjust at last line.start }')',
+ SCL, SDA, AREF, GND,
+ \char126 D13, D12, \char126 D11, \char126 D10, \char126 D9, D8,
+ nul, D7, \char126 D6, \char126 D5, D4, \char126 D3, D2, TX D1, RX D0)
+#
+ command "}"
+ `$4'] ')
+
+ `RPi( wid,ht,pinlen )'
+define(`RPi',`[
+ define(`m4bwid',`ifelse(`$1',,`34*L_unit',`$1')')dnl
+ define(`m4bht',`ifelse(`$2',,`21*lg_pinsep',`$2')')dnl
+#
+ command "{\small\sf"
+ GPIO: box wid m4bwid ht m4bht
+ plen = ifelse(`$4',,`6*L_unit',`$4')
+#
+define A_LeftGPIO {
+ exec sprintf("Pin%g: line left_ plen from GPIO.nw-(0,%g)",\
+ 2*(`$'1)-1,(`$'1)*lg_pinsep)
+ { "`$'3" ljust at last line.start }
+ "`$'2" at last line.c above }
+#
+Loopover_(`x',`ifelse(x,nul,,`A_LeftGPIO(m4Lx,patsubst(x,;,`,'))')',
+ ;3V3,
+ 2;SDA1, 3;SCL1, 4;GPIO\_GCLK,
+ ;GND,
+ 17;GPIO\_GEN0, 27;GPIO\_GEN2, 22;GPIO\_GEN3,
+ ;3V3,
+ 10;SPI\_MOSI, 9;SPI\_MISO, 11;SPI\_SCLK,
+ ;GND,
+ ;ID\_SD,
+ 5;, 6;, 13;, 19;, 26;,
+ ;GND )
+#
+define A_RightGPIO {
+ exec sprintf("Pin%g: line right_ plen from GPIO.ne-(0,%g)",\
+ 2*(`$'1),(`$'1)*lg_pinsep)
+ { "`$'3" rjust at last line.start }
+ "`$'2" at last line.c above }
+#
+Loopover_(`x',`ifelse(x,nul,,`A_RightGPIO(m4Lx,patsubst(x,;,`,'))')',
+ ;5V,
+ ;5V,
+ ;GND,
+ 14;TXD0, 15;RXD0, 18;GPIO\_GEN1,
+ ;GND,
+ 23;GPIO\_GEN4, 24;GPIO\_GEN5,
+ ;GND,
+ 25;GPIO\_GEN6, 8;SPI\_CEO\_N, 7;SPI\_CE1\_N,
+ ;ID\_SC,
+ ;GND,
+ 12;,
+ ;GND,
+ 16;, 20;, 21; )
+#
+ command "}"
+ `$4'] ')
+
+ `USB_C_Socket( wid, ht, pinlen )'
+define(`USB_C_Socket',`[
+ define(`m4bwid',`ifelse(`$1',,`18*L_unit',`$1')')dnl
+ define(`m4bht',`ifelse(`$2',,`14*lg_pinsep',`$2')')dnl
+ command "{\small\sf"
+#
+ Base: box wid m4bwid ht m4bht rad 5/3*lg_pinsep
+ plen = ifelse(`$4',,`6*L_unit',`$4')
+#
+ Loopover_(`x',
+ `B`'eval(13-m4Lx): dnl
+ line left_ plen from Base.n-(m4bwid/2,(m4Lx+0.5)*lg_pinsep)
+ {"x" ljust at last line.start}',
+ GND, RX1$+$, RX1$-$, VBUS, SBU2, D$-$, D$+$, CC2, VBUS, TX2$-$, TX2$+$, GND)
+#
+ Loopover_(`x',
+ `A`'m4Lx: line right_ plen from Base.n+(m4bwid/2,-(m4Lx+0.5)*lg_pinsep)
+ {"x" rjust at last line.start}',
+ GND, TX1$+$, TX1$-$, VBUS, CC1, D$+$, D$-$, SBU1, VBUS, RX2$-$, RX2$+$, GND)
+#
+ command "}"
+ `$4']')
+
+ `HDMI_micro( wid, ht, pinlen )'
+define(`HDMI_micro',`[
+ define(`m4bwid',`ifelse(`$1',,`16*L_unit',`$1')')dnl
+ define(`m4bht',`ifelse(`$2',,`20*lg_pinsep+m4bwid*2/3',`$2')')dnl
+ command "{\small\sf"
+#
+ Base:[line up m4bht/2 then right m4bwid*2/3 \
+ then right m4bwid/3 down m4bwid/3 \
+ then down m4bht-2*m4bwid/3 then down m4bwid/3 left m4bwid/3 \
+ then left m4bwid*2/3 then to Here]
+ plen = ifelse(`$4',,`6*L_unit',`$4')
+#
+ Loopover_(`x',
+ `Pin`'m4Lx: line left_ plen from Base.nw-(0,m4bwid/3+m4Lx*lg_pinsep)
+ {"x" ljust at last line.start}
+ "m4Lx" at last line.c above',
+ HPD, UTILITY, D2$+$, D2\_SH, D2$-$, D1$+$, D1\_SH, D1$-$, D0$+$, D0\_SH,
+ D0$-$, CLK$+$, CLK\_SH, CLK$-$, CEC, GND, SCL, SDA, $+``$''5V)
+ line from Base.nw+(m4bwid*2/3-lg_pinsep,0) up plen
+ r_text(21) at last line.c+(-5bp__,0)
+ r_text(SH2) at last line.start + (0,-10bp__)
+ line from Base.nw+(m4bwid*2/3-2*lg_pinsep,0) up plen
+ r_text(20) at last line.c+(-5bp__,0)
+ r_text(SH1) at last line.start + (0,-10bp__)
+ line from Base.sw+(m4bwid*2/3-lg_pinsep,0) down plen
+ r_text(23) at last line.c+(-5bp__,0)
+ r_text(SH4) at last line.start + (0, 10bp__)
+ line from Base.sw+(m4bwid*2/3-2*lg_pinsep,0) down plen
+ r_text(22) at last line.c+(-5bp__,0)
+ r_text(SH3) at last line.start + (0, 10bp__)
+#
+ command "}"
+ `$4']')
+
divert(0)dnl
diff --git a/graphics/circuit_macros/examples/mf/cct.mf b/graphics/circuit_macros/examples/mf/cct.mf
index 789ec556e1..7134b617a0 100644
--- a/graphics/circuit_macros/examples/mf/cct.mf
+++ b/graphics/circuit_macros/examples/mf/cct.mf
@@ -1,5 +1,5 @@
% cct.mf, generated by Mfpic, v1.10 2012/12/03,
-% from TeX source "font" on 2020/02/16 at 21:34
+% from TeX source "font" on 2020/05/01 at 17:17
numeric mfpicversion; mfpicversion := 110;
if unknown mode: mode := localfont; fi
if unknown mag: mag := 1000/1000; fi
@@ -135,15 +135,15 @@ resizedrawpen (0.4bp);
store (curpath)
drawn
-circle ((0.3084,-0),0.002767);
+circle ((0.3084,0),0.002767);
resizedrawpen (0.8bp);
store (curpath)
drawn
polyline (false)
-((0.3084,-0),
-(0.333333,-0));
+((0.3084,0),
+(0.333333,0));
endmfpic; % (3) line 59 in the TeX source.
%------------------------------------------
@@ -217,15 +217,15 @@ resizedrawpen (0.4bp);
store (curpath)
drawn
-circle ((-0,-0.3084),0.002767);
+circle ((0,-0.3084),0.002767);
resizedrawpen (0.8bp);
store (curpath)
drawn
polyline (false)
-((-0,-0.3084),
-(-0,-0.333333));
+((0,-0.3084),
+(0,-0.333333));
endmfpic; % (4) line 77 in the TeX source.
%------------------------------------------
@@ -3121,7 +3121,7 @@ polyline (false)
store (curpath)
drawn
-arcplr ((0,0.1375),180,-0,0.175);
+arcplr ((0,0.1375),-180,-360,0.175);
store (curpath)
drawn
@@ -4687,7 +4687,7 @@ polyline (false)
store (curpath)
drawn
-arcplr ((0,-0.2),-0,-180,0.15);
+arcplr ((0,-0.2),0,-180,0.15);
endmfpic; % (103) line 1561 in the TeX source.
%------------------------------------------
@@ -4739,7 +4739,7 @@ polyline (false)
store (curpath)
drawn
-arcplr ((0,0.2),180,0,0.15);
+arcplr ((0,0.2),-180,-360,0.15);
endmfpic; % (105) line 1581 in the TeX source.
%------------------------------------------
@@ -5035,7 +5035,7 @@ polyline (false)
store (curpath)
drawn
-arcplr ((0,-0.2),-0,-180,0.15);
+arcplr ((0,-0.2),0,-180,0.15);
store (curpath)
drawn
@@ -5095,7 +5095,7 @@ polyline (false)
store (curpath)
drawn
-arcplr ((0,0.2),180,0,0.15);
+arcplr ((0,0.2),-180,-360,0.15);
store (curpath)
drawn
diff --git a/graphics/circuit_macros/examples/mpost/Makefile b/graphics/circuit_macros/examples/mpost/Makefile
index 3373e88305..2b8099c34d 100644
--- a/graphics/circuit_macros/examples/mpost/Makefile
+++ b/graphics/circuit_macros/examples/mpost/Makefile
@@ -22,6 +22,7 @@ DOC = examplesmpost
FIGS = Adder.1 Alogix.1 ABlogix.1 Antennas.1 AmpTable.1 Audio.1 \
AntiqueClock.1 \
Bip.1 Btree.1 Byte.1 Buttons.1 \
+ Connectors.1 Contact.1 Contacts.1 \
Counting.1 Crossbar.1 Crow.1 Csource.1 CanLogic.1 CctTable.1 Conn.1 \
Decoder.1 Demultiplexer.1 Dini.1 Diodes.1 Drive.1 \
Emarrows.1 Flow.1 Fuses.1 \
@@ -71,7 +72,7 @@ DIMFILE = tmp.dim
@(printf 'verbatimtex\n' ;\
printf '=documentclass[11pt]{article}\n' ;\
printf '=usepackage{times,boxdims,graphicx}\n' ;\
- printf '=usepackage[amssymb,Gray,thinqspace,textstyle]{SIunits}\n' ;\
+ printf '=usepackage{siunitx}\n' ;\
$(MKDIM) ;\
printf '=begin{document} etex\n' ) $(TR) > $*.mp
# $(M4) $(DIMFILE) $(DOC).dim $*.m4 | $(DPIC) -s >> $*.mp
diff --git a/graphics/circuit_macros/examples/mpost/README-mpost b/graphics/circuit_macros/examples/mpost/README-mpost
index 8ac5ba426f..53d0263f27 100644
--- a/graphics/circuit_macros/examples/mpost/README-mpost
+++ b/graphics/circuit_macros/examples/mpost/README-mpost
@@ -7,6 +7,8 @@ output of dpic.
passed through m4, dpic, and MetaPost, and then is imported into
examplesmpost.tex by the \includegraphics macro. On MikTeX, check the MKDIM
definition in the Makefile before typing "make".
+ The current version truncates the input near the end to avoid
+ a "Tex capacity exceeded error".
2. To work on a single file, copy the source into test.m4 in this directory
and type make tst. The files test.pic, test.mp, test.1, tst.dvi, and tst.ps
diff --git a/graphics/circuit_macros/examples/mpost/examplesmpost.tex b/graphics/circuit_macros/examples/mpost/examplesmpost.tex
index 280a985c49..45baa6b325 100644
--- a/graphics/circuit_macros/examples/mpost/examplesmpost.tex
+++ b/graphics/circuit_macros/examples/mpost/examplesmpost.tex
@@ -4,7 +4,7 @@
\usepackage{times,boxdims,pstricks}
\usepackage{rotating}
\usepackage{graphicx}
-\usepackage[amssymb,Gray,thinqspace,textstyle]{SIunits}
+\usepackage{siunitx}
\input ../header
diff --git a/graphics/circuit_macros/examples/mpost/mptest b/graphics/circuit_macros/examples/mpost/mptest
index 29f6d5841a..cfc94b6bc0 100755
--- a/graphics/circuit_macros/examples/mpost/mptest
+++ b/graphics/circuit_macros/examples/mpost/mptest
@@ -18,7 +18,7 @@ m4 $LIBS $1.m4 > $1.pic
( echo 'verbatimtex
=documentclass[11pt]{article}
=usepackage{times,boxdims}=usepackage{graphicx}
-=usepackage[amssymb,Gray,thinqspace,textstyle]{SIunits}
+=usepackage{siunitx}
=begin{document} etex
') | tr '=' '\134' > $1.mp
diff --git a/graphics/circuit_macros/examples/mpost/tstmpost.tex b/graphics/circuit_macros/examples/mpost/tstmpost.tex
index a791b3d9dd..a64a66241f 100644
--- a/graphics/circuit_macros/examples/mpost/tstmpost.tex
+++ b/graphics/circuit_macros/examples/mpost/tstmpost.tex
@@ -1,7 +1,7 @@
\documentclass[11pt,dvips]{article}
\usepackage[dvips]{graphicx}
\usepackage{amssymb,pstricks,boxdims,pst-grad}
-\usepackage[amssymb,Gray,thinqspace,textstyle]{SIunits}
+\usepackage{siunitx}
\addtolength{\textwidth}{2cm}
\addtolength{\textheight}{3cm}
\setlength{\oddsidemargin}{0pt}
diff --git a/graphics/circuit_macros/examples/odistmakefile b/graphics/circuit_macros/examples/odistmakefile
deleted file mode 100644
index f6e26d9d37..0000000000
--- a/graphics/circuit_macros/examples/odistmakefile
+++ /dev/null
@@ -1,548 +0,0 @@
-# Examples distmakefile.
-#
-# CTAN dist files: make -f distmakefile dist zips
-# The CTAN file is tmp/Circuit_macros/Circuit_macrosN.N.tar.gz
-# or
-# make -f distmakefile distece
-# The ECE file is ~/tmp/CMdistfiles.tar.gz
-# Change the version number in doc/Version.tex
-
-# Circuit_macro directory, change this if necessary:
-LIBDIR = $$HOME/lib
-LIBDIR=/cygdrive/D/Dwight/lib
-# LIBDIR = ..
-
-# The dpic processor:
-PIC = dpic -p
-
-CONFIGFILE = pstricks.m4
-
-# Uncomment for gpic. Use gpic or pic as applicable on your machine:
-# PIC = gpic -t
-# PIC = pic -t
-# CONFIGFILE = gpic.m4
-
-#########################################################################
-
-# M4 = m4 -B32000
-# M4 = m4 -I $(LIBDIR)
-# Environment variable M4PATH has been set to the installation directory:
-M4 = m4
-
-#########################################################################
-
-THISFILE = distmakefile
-
-DOC = examples
-PICS = \
- Adder.tex Alogix.tex ABlogix.tex AmpTable.tex Antennas.tex Audio.tex \
- Bip.tex Btree.tex Byte.tex Buttons.tex \
- CanLogic.tex CctTable.tex Conn.tex Counting.tex Crossbar.tex Crow.tex \
- Csource.tex \
- Decoder.tex Demultiplexer.tex Dini.tex Diodes.tex Drive.tex \
- Emarrows.tex Flow.tex Fuses.tex Grounds.tex \
- Headers.tex Heathkit.tex \
- I2L.tex Incleps.tex Jack.tex \
- Logic.tex Loglog.tex MC.tex Mixer.tex MotorControl.tex Multiplexer.tex \
- NLG.tex NPDT.tex Nport.tex \
- Opamp.tex Optoiso.tex \
- Pconn.tex PushPull.tex Quantum.tex \
- Rectifiers.tex Relay.tex Rotbox.tex \
- Schottky.tex ShiftR.tex Sierpinski.tex Sixpole.tex Sources.tex SQUID.tex \
- Switches.tex \
- TTLnand.tex Tgate.tex Three.tex Timer.tex Ttree.tex Tubediags.tex \
- Variable.tex Windings.tex Xform.tex \
- control.tex csc.tex diamond.tex \
- ex00.tex ex01.tex ex02.tex ex03.tex ex04.tex ex05.tex ex06.tex \
- ex08.tex ex09.tex ex10.tex ex11.tex ex12.tex ex15.tex \
- ex16.tex ex17.tex ex18.tex ex21.tex exp.tex fet.tex \
- graysurf.tex lcct.tex pwrsupply.tex quick.tex recycle.tex rose.tex \
- sfg.tex shapes.tex thyristor.tex ujt.tex worm.tex XOR.tex
-
-PICS = `make -f Makefile echopics`
-
-MANFIGS = AmpTable Antennas Audio Bip CctTable Conn Contact Contacts \
- Demultiplexer Diodes \
- Emarrows Fuses Grounds Headers Jack Logic Multiplexer NLG NPDT Nport Opamp \
- Pconn Relay ShiftR Sources Switches Tgate Variable Windings Xform fet quick \
- thyristor ujt
-
-# Files that have to be processed twice:
-BOXDIMS = ex09 Crow Incleps Loglog Opamp Windings
-
-M4LIBS = $(CONFIGFILE)
-
-# Convert options
-EPSOPTS = -trim
-TIFOPTS = -trim
-SVGOPTS = -trim
-GIFOPTS = -trim
-PNGOPTS = -trim -density 400 -scale 25% -quality 92 -alpha Remove
-
-DVIPSOPTS = -Ppdf -G0 -t ledger
-
-DIMFILE = $(DOC).dim
-LTX = latex --shell-escape --quiet
-BS = tr '|' '\134'
-
-.SUFFIXES: .ps .dvi .tex .m4 .pic .eps .png .pdf .svg .tif .gif
-.dvi.ps:
- dvips $(DVIPSOPTS) $* -o $*.ps
- chmod 644 $*.ps
-.m4.tex:
- @if test -n "$(DIMFILE)" ; then touch $(DIMFILE) ; fi ; touch F_$*.dim
- $(M4) $(M4LIBS) $(DIMFILE) F_$*.dim $*.m4 | sed -e '/^ *$$/d' > $*.pic
- $(PIC) $*.pic > $*.tex
-.m4.pic:
- @if test -n "$(DIMFILE)" ; then touch $(DIMFILE) ; fi
- $(M4) $(M4LIBS) $(DIMFILE) $*.m4 > $*.pic
-.m4.dvi:
- make -f $(THISFILE) $*.tex
- printf "|documentclass[11pt]{article}\n\
-|usepackage{times,pstricks,boxdims,graphicx,pst-grad,pst-slpe}\n\
-|usepackage[amssymb,Gray,thinqspace,textstyle]{SIunits}\n\
-|setlength{|textwidth}{28cm}|addtolength{|textheight}{28cm}\n\
-|setlength{|oddsidemargin}{0pt}|setlength{|evensidemargin}{0pt}\n\
-|setlength{|hoffset}{-1cm}\n\
-|newbox|graph\n\
-|pagestyle{empty}|thispagestyle{empty}\n\
-|begin{document}\n\
-|noindent|input{"$*".tex}\n\
-|end{document}\n" | $(BS) > F_$*.tex
- latex --quiet F_$*
- touch F_$*.dim $(DIMFILE) ; rm -f $*.tex $*.pic ; make -f $(THISFILE) $*.tex
- latex --quiet F_$*
- touch F_$*.dim $(DIMFILE) ; rm -f $*.tex $*.pic ; make -f $(THISFILE) $*.tex
- latex --quiet F_$*
-.m4.eps:
- make -f $(THISFILE) $*.dvi
- dvips -Ppdf F_$* -T128cm,28cm -o $*.ps
-# Recent changes to PSTricks(?) have clashed with the use of TeXtoEPS
-# so use ps2epsi
- ps2epsi $*.ps $*.epsi
- ( sed -e '/%%Pages:/d' -e '/BeginPreview/,$$d' -e '/%%HiResBoundingBox/d' \
- $*.epsi | tr '\015' '\012' ; sed -e '1,/EndPreview/d' $*.epsi ) | awk \
- '/^%%BoundingBox/{print $$1" "$$2" "$$3" "$$4+10" "$$5+15; next}; {print}' \
- >$*.eps
-.m4.ps:
- make -f $(THISFILE) $*.tex && mv $*.tex test.tex; latex --quiet tst
- rm -f test.tex $*.pic
- if test -f tst.dim ; then cp tst.dim F_$*.dim ; fi
- make -f $(THISFILE) $*.tex && mv $*.tex test.tex; latex --quiet tst
- dvips $(DVIPSOPTS) tst -o $*.ps
- chmod 644 $*.ps
-.m4.svg:
- make -f $(THISFILE) $*.ps
- convert $(SVGOPTS) $*.ps $*.svg
-.m4.png:
- make -f $(THISFILE) $*.ps
-# make -f $(THISFILE) $*.eps
-# convert $(PNGOPTS) $*.eps $*.png
- convert $(PNGOPTS) $*.ps $*.png
- @if test -f $*.png.0 ; then mv $*.png.0 $*.png ; fi
-.m4.gif:
- make -f $(THISFILE) $*.ps
- convert $(GIFOPTS) $*.ps $*.gif
-.m4.tif:
- make -f $(THISFILE) $*.ps
- convert $(TIFOPTS) $*.ps $*.tif
- @if test -f $*.tif.0 ; then mv $*.tif.0 $*.tif ; fi
-.m4.pdf:
- touch F_$*.dim
- $(M4) pgf.m4 F_$*.dim $*.m4 > $*.pic
- dpic -g $*.pic > test.tex
- sed -e '/^\\usepackage.*graphicx/s/^.*$$/\\usepackage{tikz}/' \
- -e '/pstricks/d' tst.tex > F_$*.tex
- pdflatex --quiet F_$*
- $(M4) pgf.m4 F_$*.dim $*.m4 > $*.pic
- dpic -g $*.pic > test.tex
- pdflatex --quiet F_$*
- mv F_$*.pdf $*.pdf
-
-#########################################################################
-default:
- @printf "\n === making default\n"
- @printf "\n\n\nUSAGE: make -f $(THISFILE) distece\n\n\n"
-
-$(DOC).ps: $(DOC).dvi
-
-doclinks:
- @printf "\n === making doclinks\n"
- -for nm in $(MANFIGS) ; do cp $(LIBDIR)/doc/$$nm.m4 . ; done
- touch doclinks
-
-$(DOC).dvi: $(DOC).frs
- @printf "\n === making $(DOC).dvi\n"
- touch $(DOC).dim
- for file in $(BOXDIMS) ; do \
- rm -f $$file.tex $$file.pic ; \
- make -f $(THISFILE) PIC="$(PIC)" DIMFILE=$(DOC).dim $${file}.tex ; done
- latex --quiet $(DOC)
- for file in $(BOXDIMS) ; do \
- rm -f $$file.tex $$file.pic ; \
- make -f $(THISFILE) PIC="$(PIC)" DIMFILE=$(DOC).dim $${file}.tex ; done
- latex --quiet $(DOC)
-
-$(DOC).frs: $(DOC).tex files.tex header.tex
- @printf "\n === making $(DOC).frs\n"
- printf "|usepackage{pstricks,pst-grad}\n" | $(BS) > mode.tex
- make -f $(THISFILE) $(PICS)
- cp $(LIBDIR)/doc/Version.tex .
- latex --quiet $(DOC)
- touch $(DOC).frs
- rm -f $(DOC).dvi
-
-tst:
- make -f $(THISFILE) test.tex; latex --quiet tst; rm -f test.tex test.pic
- make -f $(THISFILE) DIMFILE=tst.dim test.tex; latex --quiet tst
- dvips $(DVIPSOPTS) tst -o tst.ps
-
-tst1: test.tex tst.tex
- latex --quiet tst
- dvips $(DVIPSOPTS) tst -o tst.ps
-
-gtst:
- touch test.m4; make -f $(THISFILE) PIC="gpic -t" CONFIGFILE="" tst
-
-gtst1:
- touch test.m4; make -f $(THISFILE) PIC="gpic -t" CONFIGFILE="" tst1
-
-# Distribution files
-NAME=Circuit_macros
-TMP=/tmp
-
-# Makes test.m4, examples.pdf, Circuit_macros.pdf,
-# Copying, examples/mf/cct.tfm examples/xfig
-dist:
- @printf "\n === making lib/examples/dist\n"
- (cd .. ; make clobber )
- touch test.m4; cp test.m4 $(TMP)/test`date +%Y.%m.%d.%H:%M:%S`
- find . -name test.m4 -exec rm -f {} \;
- make -f $(THISFILE) test.m4
- (cd $(LIBDIR)/doc; make )
- make -f Makefile examples.pdf
- ( cd $(LIBDIR); mv doc/Circuit_macros.pdf . ; \
- mv examples/examples.pdf . ; \
- make clobber; chmod 644 Circuit_macros.pdf examples.pdf; \
- cp -p Circuit_macros.pdf examples.pdf $(TMP) ; \
- mv Circuit_macros.pdf doc; mv examples.pdf examples )
-# touch reducedfiles
-# make -f $(THISFILE) reducedfiles
-# while test -f reducedfiles ; do sleep 1; done
- make -f $(THISFILE) Copying
- @printf "\n === making lib/examples/mf/cct.tfm\n"
- (cd mf; make; chmod 644 cct.tfm; make clean)
- @printf "\n === making lib/examples/xfig\n"
- (cd xfig; make; make clean)
- (cd $(LIBDIR)/doc; make clean )
- -dir=`pwd` ; if [ "`basename $$dir`" = "examples" ] ; then \
- rm -f $(LIBDIR)/examples.tar.gz ; fi
-
-EXCHANGE="`find C:/Program*\\(x86\\)/Adobe -name Acrobat.exe -print`"
-
-reducedfiles:
- @printf "\n === making reducedfiles\n"
- -( cd $(LIBDIR)/doc ; \
- printf "\n\n save Circuit_macros.pdf as reduced size pdf\n\n" ; \
- pwd | sed -e 's%/cygdrive/\(.\)%\1:%' -e 's%/%\\\\%g' \
- -e 's%^%$(EXCHANGE) %' -e 's%$$%\\\\Circuit_macros.pdf%' | sh ) && \
- ( printf "\n\n save examples.pdf as reduced size pdf\n\n" ; \
- pwd | sed -e 's%/cygdrive/\(.\)%\1:%' -e 's%/%\\\\%g' \
- -e 's%^%$(EXCHANGE) %' -e 's%$$%/examples.pdf%' | sh ) && \
-
-$(TMP)/$(NAME):
- if test -d $(TMP)/$(NAME); then rm -rf $(TMP)/$(NAME); \
- mkdir -p $(TMP)/$(NAME) ; fi
-
-COPIED = boxdims.sty CHANGES Copying darrow.m4 doc examples gpic.m4 \
- lib3D.m4 libcct.m4 libgen.m4 liblog.m4 Licence.txt \
- Makefile mfpic.m4 mpost.m4 pgf.m4 postscript.m4 psfrag.m4 pstricks.m4 \
- README svg.m4 xfig.m4 dpictools.pic
-
-REMOVED = examples/test examples/dev examples/pdflatex examples/xfig/info \
- examples/htmlsource examples/html examples/dist examples/zips \
- examples/SCP examples/distmakefile examples/boxdims \
- m4s \
- doc/expl-m4.pdf
-
-zipdir: $(TMP)/$(NAME)
- @printf "\n === making lib/examples/zips\n"
- Version=`sed -e 's/Version //' $(LIBDIR)/doc/Version.tex` ; \
- PCVersion=`echo $$Version | sed -e 's/\./_/g'` ; \
- rm -rf $(TMP)/$(NAME)$$Version ; mkdir $(TMP)/$(NAME)$$Version; \
- (cd $(LIBDIR); cp -r $(COPIED) $(TMP)/$(NAME)$$Version ); \
- (cd $(TMP)/$(NAME)$$Version ; rm -rf $(REMOVED) ) ; \
- (cd $(TMP)/$(NAME)$$Version ; find . -type f -exec chmod 644 {} \; ) ; \
- (cd $(TMP)/$(NAME)$$Version ; find . -type f -empty -exec rm {} \; ) ; \
- (cd $(TMP)/$(NAME)$$Version ; find . -type d -exec chmod 755 {} \; ) ; \
- (cd $(TMP)/$(NAME)$$Version ; chmod +x examples/mf/mftest ) ; \
- (cd $(TMP)/$(NAME)$$Version ; chmod +x examples/mpost/mptest ) ; \
- (cd $(LIBDIR)/doc; make clobber )
- touch zipdir
-
-zips: zipdir
- Version=`sed -e 's/Version //' $(LIBDIR)/doc/Version.tex` ; \
- ( cd $(TMP); \
- tar cf - $(NAME)$$Version | gzip > $(NAME)$$Version.tar.gz ; \
- (cd $(NAME)$$Version; zip -r $(NAME) * ) ; \
- mv $(NAME)$$Version/$(NAME).zip $(NAME)$$PCVersion.zip ; \
- printf "\n$(TMP)/$(NAME)$$Version and\n" ; \
- printf "$(TMP)/$(NAME)$$Version.tar.gz created\n"; \
- printf "\n$(TMP)/$(NAME)$$PCVersion.zip created\n" )
-# touch zips
-
-test.m4:
- @printf "\n === making test.m4\n"
- printf \
-".PS\n\
-# Test.m4\n\
-cct_init\n\
-# Use this file to do a quick test of diagrams you are developing.\n\
-# Enter the drawing commands here and (if you have a \"make\" utility) type\n\
-# make tst\n\
-# Otherwise, to process a file called filename.m4, type one of\n\
-# make filename.ps\n\
-# make filename.eps\n\
-# make filename.pdf\n\
-# make filename.gif (requires ImageMagick convert)\n\
-# make filename.png (requires ImageMagick convert)\n\
-# make filename.tif (requires ImageMagick convert)\n\
-# To perform tests in a new folder, copy the Makefile, this file,\n\
-# and tst.tex (or your own equivalent) to that folder.\n\
-.PE\n" > test.m4
-
-# For the git repository
-GITDIR=$${HOME}/dpic/git/Circuit_macros
-gitsync: dist zipdir
- cd $(GITDIR) && rsync -a -v $(TMP)/Cir*[0-9]/* .
- cp -p htmlsource/.gitignore $(GITDIR)
-
-distfile:
- @printf "\n === making distfile\n"
- rm -f dist zips htmlfiles
- make -f $(THISFILE) dist zips htmlfiles
- rm -rf distfile distfile.tar.gz; mkdir distfile
- Version=`sed -e 's/Version //' $(LIBDIR)/doc/Version.tex` ; \
- cp -p $(TMP)/$(NAME)$$Version.tar.gz \
- $(TMP)/$(NAME)$$Version/README $(TMP)/$(NAME)$$Version/CHANGES \
- distfile ;\
- PCVersion=`echo $$Version | sed -e 's/\./_/g'` ; \
- cp -p $(TMP)/$(NAME)$$PCVersion.zip distfile ;\
- mkdir distfile/html
- cp -rp html/* distfile/html
- (cd distfile/html; mv index.html .. ; rm -f access.log *.pl )
-# tarlib distfile
-
-EPSFILES=${PICS:%.tex=%.eps}
-# Make an encapsulated Postscript file for each example (requires pstricks)
-eps:
- @printf "\n === making eps\n"
- make -f $(THISFILE) ${PICS:%.tex=%.eps}
-
-Copying: $(LIBDIR)/doc/Version.tex
- @printf "\n === making Copying\n"
- sed -e \
- "s%Version *[0-9.]*,%`cat $(LIBDIR)/doc/Version.tex`,%" $(LIBDIR)/Copying \
- > xxx
- sed -e "s%opyright (c) [^ ][^ ]* J%opyright (c) `date '+%Y'` J%" xxx \
- > $(LIBDIR)/Copying ; rm -f xxx
-# for file in `find $(LIBDIR) -name Copying -print` ; do \
-# if test ! "$$file" = "$(LIBDIR)/Copying" ; then \
-# cp $(LIBDIR)/Copying $$file; fi ; done
- (cd $(LIBDIR) ; for file in `grep -l 'Version [0-9][\.0-9]*,' *` ; do \
- if test ! \( "$$file" = "Copying" -o "$$file" = "CHANGES" \) ; then \
- ( sed -e '/opyright (c)/,$$d' $$file ; cat Copying ; echo "" ; \
- sed -e '1,/opyright (c)/d' $$file | sed -e '1,/^ *$$/d' ) > xxx ; \
- sed -e "s%Version *[0-9.]*:%`cat doc/Version.tex`:%" xxx \
- > $$file ; rm -f xxx ; fi ; done ; )
- (cd $(LIBDIR) ; \
- ( sed -e '/opyright (c)/,$$d' dpictools.pic ; \
- sed -e 's/^ *\*/\#/' -e 's/\* *$$/\#/' Copying ; echo "" ; \
- sed -e '1,/opyright (c)/d' dpictools.pic | sed -e '1,/^ *$$/d' ) > xxx ;\
- sed -e "s%Version *[0-9.]*:%`cat doc/Version.tex`:%" xxx \
- > dpictools.pic ; rm xxx )
-
-htmlfiles: html svgfiles pngs html/examples.html html/index.html \
- Circuit_macros.ico html/Optosample.png
- @printf "\n === making lib/examples/htmlfiles\n"
- mv Circuit_macros.ico html
- if test -f examples.pdf ; \
- then printf "\n\n examples.pdf found\n" ; \
- else printf "\n\n examples.pdf not found\n" ; fi
- if test -f doc/Circuit_macros.pdf ; \
- then printf "\n\n doc/Circuit_macros.pdf found\n" ; \
- cp doc/Circuit_macros.pdf html ; \
- else printf "\n\n doc/Circuit_macros.pdf not found\n" ; \
- cp $(TMP)/Circuit_macros.pdf $(LIBDIR)/doc ; fi
- cp examples.pdf html
- (cd html; chmod 644 *.svg *.txt *.html *.pdf )
- touch htmlfiles
-
-html:
- @printf "\n === making html\n"
- if test ! -d html ; then mkdir html ; fi
- ( cd htmlsource; cp -p $(PERLFILE).pl .htaccess ../html )
-
-svgfiles: html
- @printf "\n === making svgfiles\n"
- ( cd svg; make )
- for file in `ls svg/*SVG.m4` ; \
- do cp $$file html/`basename $$file .m4`.txt ; done
- cp -p svg/examplesSVG.html svg/*.svg svg/*.jpg html
- touch svgfiles
-
-Circuit_macros.ico: html htmlsource/favicon.m4
- @printf "\n === making Circuit_macros.ico\n"
- cp htmlsource/favicon.m4 .
- make -f $(THISFILE) favicon.eps
- convert -density 105 favicon.eps Circuit_macros.ico
- rm -f favicon.*
-
-html/index.html: htmlsource/index.htmx html
- @printf "\n === making index.html\n"
- Version=`sed -e 's/Version //' $(LIBDIR)/doc/Version.tex` ; \
- PCVersion=`echo $$Version | sed -e 's/\./_/g'` ; \
- sed -e 's/XXX/'$$Version'/' \
- -e 's/PCVersion/'$$PCVersion'/' \
- htmlsource/index.htmx > html/index.html
-
-html/Optosample.png: html htmlsource/Optosample.m4
- @printf "\n === making Optosample.png\n"
- cp htmlsource/Optosample.m4 .
- make -f $(THISFILE) Optosample.eps
- convert Optosample.eps Optosample.png
- mv Optosample.png html/Optosample.png
- rm -f Optosample.*
-
-TR = tr '^@' '\012`'
-html/examples.html: html htmlsource/examples.htmx files.tex
- @printf "\n === making examples.html\n"
- Version=`sed -e 's/Version //' $(LIBDIR)/doc/Version.tex` ; \
- sed -e 's/Version XXX/Version '$$Version'/' htmlsource/examples.htmx \
- > html/examples.html
- cat files.tex | sed -e '/bfig[\{]/d' -e '/^ *[\}][\}]* *$$/d' \
- -e '/src[\{]/d' -e '/\\if/d' -e '/\\fi/d' -e '/includegraphics/d' \
- -e '/\%ignore\%/d' -e '/^\%/d' -e '/\\end[\{]/d' -e '/^\%/d' \
- -e '/getpic/s/\\getpic[\{]\([^\}]*\)[\}][\}]*/ <\1> /g' \
- -e '/<[^-]/s/^[^<]*<//' -e '/<[^-]/s/>[^<]*</> /g' -e '/[^-]>/s/>.*$$/>/' \
- -e 's/\([^ -][^ -]*\)>/IS_"\1.png" A_"\1 diagram">B_"\1.txt" T_\1.m4Y/'\
- -e 's/IS_/<P><IMG SRC=/' -e 's/A_/ALT=/' -e 's/B_/<BR>^<A HREF=/' \
- -e 's/T_/TARGET="_blank"><P>/' -e 's/4Y/4<\/A>:/' \
- -e 's/^.*caption[\{]//' -e '/^ *$$/s/^ */<HR>/' \
- -e 's/\\hbox//g' \
- | sed \
- -e '/<P>/!s/{\\tt \([^}]*\)}/<tt>\1<\/tt>/g' \
- -e '/<P>/!s/{\\texttt \([^}]*\)}/<tt>\1<\/tt>/g' \
- -e '/<P>/!s/{\\bf \([^}]*\)}/<tt>\1<\/tt>/g' \
- -e '/<P>/!s/{\\em \([^}]*\)}/<em>\1<\/em>/g' \
- -e '/<P>/!s/{\\it \([^}]*\)}/<em>\1<\/em>/g' \
- -e '/<P>/!s/{\\sl \([^}]*\)}/<em>\1<\/em>/g' \
- -e '/<P>/!s%\([^\\]\)_\(.\)%\1<sub>\2</sub>%g' \
- -e '/<P>/!s%\([^\\]\)\^\(.\)%\1<sup>\2</sup>%g' \
- -e 's%``%"%g' -e "s%''%\"%g" -e 's/\~/ /g' \
- -e 's%\\%%g' -e 's/\$$//g' \
- | sed -e 's/HREF=Inclpdf.m4/HREF=Inclpdf.txt/' | $(TR) \
- >> html/examples.html
- cat htmlsource/endexamples.htmx >> html/examples.html
-
-BACKGROUND = blight
-
-pngs: basenames
- @printf "\n === making pngs\n"
- cp htmlsource/$(BACKGROUND).m4 .
- -for nm in `cat basenames` ; do \
- echo "make -f $(THISFILE) $$nm.png ; mv $$nm.png html/$$nm.png" ;\
- make -f $(THISFILE) $$nm.png ; mv $$nm.png html/$$nm.png ;\
- ls -l html/$$nm.png ; \
- done
- make -f $(THISFILE) $(BACKGROUND).png
- mv $(BACKGROUND).png html/$(BACKGROUND).png
- rm -f $(BACKGROUND).tex
- -for nm in `cat basenames` ; do\
- cp $$nm.m4 html/$$nm.txt ; done
- cp Inclpdf.m4 html/Inclpdf.txt
- echo "" > html/Inclpdf.m4
- cat Inclpdf.m4 >> html/Inclpdf.m4
- chmod 644 html/Inclpdf.m4
-
-gifs: basenames
- @printf "\n === making gifs\n"
- -for nm in `cat basenames` ; do \
- make -f $(THISFILE) $$nm.gif ; mv $$nm.gif html/$$nm.gif ;\
- done
- make -f $(THISFILE) $(BACKGROUND).gif
- mv $(BACKGROUND).gif html/$(BACKGROUND).gif
- rm -f $(BACKGROUND).tex
- -for nm in `cat basenames` ; do\
- cp $$nm.m4 html/$$nm.txt ; done
- cp Inclpdf.m4 html/Inclpdf.txt
- echo "" > html/Inclpdf.m4
- cat Inclpdf.m4 >> html/Inclpdf.m4
- chmod 644 html/Inclpdf.m4
-
-basenames: files.tex
- @printf "\n === making basenames\n"
- grep '\\getpic' files.tex | sed -e '/Inclpdf/d' \
- -e 's%\\getpic[\{]\([^\}]*\)[\}]% <\1> %g' \
- -e 's/^[^<]*<//' -e 's/>[^<]*</ /g' -e 's/>.*$$//' \
- | sort | uniq > basenames
-
-# To make but not distribute everything: make dist zips htmlfiles
-
-ECETMP = /cygdrive/d/Dwight/tmp
-ECENAM = CMdistfiles
-ECEDIR = $(ECETMP)/$(NAME)
-PERLFILE = Circuit_macros_access_log
-
-# (cd lib/examples; make -f distmakefile distece 2>&1)2>&1 > typescript
-distece:
- @printf "\n === making lib/examples/distece\n"
- (cd ..; find . -type f -exec chmod 644 {} \; )
- rm -f dist zips htmlfiles
- make -f $(THISFILE) dist zips htmlfiles
- rm -rf $(ECEDIR)* ; mkdir $(ECEDIR)
- Version=`sed -e 's/Version //' $(LIBDIR)/doc/Version.tex` ; \
- PCVersion=`echo $$Version | sed -e 's/\./_/g'` ; \
- cp -p $(TMP)/$(NAME)$$Version.tar.gz \
- $(TMP)/$(NAME)$$PCVersion.zip \
- $(TMP)/$(NAME)$$Version/README $(TMP)/$(NAME)$$Version/CHANGES \
- $(TMP)/$(NAME)$$Version/doc/Circuit_macros.pdf \
- $(ECEDIR)
- rm -rf $(ECEDIR)/html ; mkdir $(ECEDIR)/html
- cp -rp html/* $(ECEDIR)/html
- mv $(ECEDIR)/html/index.html $(ECEDIR)/index.html
- (cd $(ECETMP); tarlib $(NAME); mv $(NAME).tar.gz $(ECENAM).tar.gz )
- echo ""; echo ""; ls -l $(ECETMP)/$(ECENAM).tar.gz
-
-testall:
- (cd mf; make)
- (cd mpost; make)
-# (cd pgf; make)
- (cd psfrag; make)
- (cd svg; make)
- (cd xfig; make)
-
-clobber: clean
- rm -f *.ps
- -@for dir in mf mpost pdflatex xfig psfrag pgf svg dev test; \
- do (if test -d $$dir ; then cd $$dir; make clobber; fi) ; done
- rm -f *.warn
- rm -rf index.html html basenames *.png* dist zips htmlfiles svgfiles
- rm -rf $(TMP)/Cir* $(ECETMP)/Cir* $(ECEDIR)
- if test -f Incl.pdf ; then \
- mv Incl.pdf Incl.pdx; rm -f *.pdf; mv Incl.pdx Incl.pdf ; fi
- for file in `ls *.tex` ; do \
- nm=`echo $$file | sed -e "s/\(.*\)\.tex/\1/"` ; \
- if test -s $$nm.m4 ; then rm -f $$nm.pic $$nm.tex ; fi ; done
-
-clean:
- @printf "\nclean:\n"
- find .. -name \*stackdump -exec rm {} \;
- rm -f core snapshots *.ico *favicon* $(BACKGROUND).* zipdir
- rm -f *.dvi *.aux *.log *.toc *.blg *.eps *.epsi eps *-mfpic*
- rm -f fig*.tex $(PICS) *.roff *.int *.pic gpic.m4 test.tex xxx* *.fig
- rm -f *.dim *.bak *.frs $(RPICS) rotate.ps tst.ps *.bbl *-pics.ps *.gif
- rm -f *.tfm *[0-9]pk *.png *.1
- rm -f F_*.tex Version.tex doclinks *stackdump *.ico
- rm -rf distfile distfile.tar.gz
- @printf "\n"
diff --git a/graphics/circuit_macros/examples/psfrag/Makefile b/graphics/circuit_macros/examples/psfrag/Makefile
index 83eb573f8e..314d8c3ef1 100644
--- a/graphics/circuit_macros/examples/psfrag/Makefile
+++ b/graphics/circuit_macros/examples/psfrag/Makefile
@@ -23,8 +23,10 @@ DOC = examplespsfrag
FIGS = Adder.eps Alogix.eps ABlogix.eps Antennas.eps Audio.eps AmpTable.eps \
AntiqueClock.eps \
Bip.eps Btree.eps Byte.eps Buttons.eps \
- CanLogic.eps CctTable.eps Conn.eps Counting.eps Crossbar.eps Crow.eps \
+ CanLogic.eps CctTable.eps Conn.eps Connectors.eps \
+ Counting.eps Crossbar.eps Crow.eps \
Decoder.eps Demultiplexer.eps Dini.eps Diodes.eps Drive.eps \
+ Contact.eps Contacts.eps \
Csource.eps \
Emarrows.eps Flow.eps Fuses.eps \
GrayCode.eps Grounds.eps Headers.eps Heathkit.eps Jack.eps \
diff --git a/graphics/circuit_macros/examples/psfrag/examplespsfrag.tex b/graphics/circuit_macros/examples/psfrag/examplespsfrag.tex
index 594eafcd08..2baa5cd04f 100644
--- a/graphics/circuit_macros/examples/psfrag/examplespsfrag.tex
+++ b/graphics/circuit_macros/examples/psfrag/examplespsfrag.tex
@@ -2,7 +2,7 @@
\documentclass[11pt]{article}
\usepackage{times,boxdims}
-\usepackage[amssymb,Gray,thinqspace,textstyle]{SIunits}
+\usepackage{siunitx}
\usepackage{rotating}
\usepackage{graphicx}
\usepackage[scanall]{psfrag}
diff --git a/graphics/circuit_macros/examples/psfrag/tstpsfrag.tex b/graphics/circuit_macros/examples/psfrag/tstpsfrag.tex
index 2073079ef1..6aa6ed438f 100644
--- a/graphics/circuit_macros/examples/psfrag/tstpsfrag.tex
+++ b/graphics/circuit_macros/examples/psfrag/tstpsfrag.tex
@@ -1,6 +1,6 @@
\documentclass[dvips]{article}
\usepackage{times,boxdims,graphicx}
-\usepackage[amssymb,Gray,thinqspace,textstyle]{SIunits}
+\usepackage{siunitx}
\usepackage[scanall]{psfrag}
\addtolength{\textwidth}{2cm}
\addtolength{\textheight}{3cm}
diff --git a/graphics/circuit_macros/examples/svg/AntiqueClockSVG.m4 b/graphics/circuit_macros/examples/svg/AntiqueClockSVG.m4
index 0848a53cbe..63c169d3e2 100644
--- a/graphics/circuit_macros/examples/svg/AntiqueClockSVG.m4
+++ b/graphics/circuit_macros/examples/svg/AntiqueClockSVG.m4
@@ -4,9 +4,7 @@ gen_init(svg_font(font-family="sans-serif" font-stretch="condensed"))
# https://tex.stackexchange.com/questions/236923/generate-analog-clock-with-numbered-face-add-seconds-roman-numerals
-# `Initialize rotated text. Any unrotated text must
-# appear after the rotated text.'
-svgrot_init(AntiqueClockSVG)
+svg_rot_init(AntiqueClockSVG)
# `hms2deg(hr,min,sec) hr:min:sec to degrees
# blank arg1: degrees for minute hand
@@ -74,8 +72,8 @@ define(`AntiqueClock',`[ # h,m,s,diam
second = ifelse(`$3',,51,`$3')
# outer radius
ifelse(`$4',,`skale=0.5; r1=2',`r1=(`$4')/2; skale=r1/4')
- r2 = r1-0.5*skale
- r3 = r2-0.14*skale
+ r2 = r1 - 0.5*skale
+ r3 = r2 - 0.14*skale
r4 = r3 - 0.35*skale
r5 = r4 - 0.17*skale
r6 = r5 - 0.63*skale
@@ -117,11 +115,11 @@ Face: circle thick 0 fill_(1) rad r3 at C
textht = (r3-r4)*0.6
for mn = -15 to 15 by 5 do { t = 90-mn/60*360
R:(Rect_((r3+r4)/2,t))
- svg_rot(mn/60*360,sprintf("%g",pmod(mn,60)) at C+R+adj(t))
+ svg_rot(-mn/60*360,sprintf("%g",pmod(mn,60)) at C+R+adj(t))
}
for mn = 20 to 40 by 5 do { t = 450-mn/60*360
R: (Rect_((r3+r4)/2,t))
- svg_rot(-180+mn/60*360, sprintf("%g",pmod(mn,60)) at C+R+adj(t))
+ svg_rot(180-mn/60*360, sprintf("%g",pmod(mn,60)) at C+R+adj(t))
}
# Outer tics
for mn = 1 to 60 do { t = 90-mn/60*360
@@ -131,11 +129,11 @@ Face: circle thick 0 fill_(1) rad r3 at C
textht = (r5-r6)*0.6
Loopover_(`mx',`tt = 90-(m4Lx-4)/12*360
R: (Rect_((r5+r6)/2,tt))
- svg_rot(90-tt, "mx" at C+R+adj(tt)) ',
+ svg_rot(tt-90, "mx" at C+R+adj(tt)) ',
IX,X,XI,XII,I,II,III)
Loopover_(`mx',`tt = 360-m4Lx*30
R: (Rect_((r5+r6)/2,tt))
- svg_rot(270-tt, "mx" at C+R+adj(tt)) ',
+ svg_rot(tt-270, "mx" at C+R+adj(tt)) ',
IV,V,VI,VII,VIII)
# Inner tics
diff --git a/graphics/circuit_macros/examples/svg/AudioSVG.m4 b/graphics/circuit_macros/examples/svg/AudioSVG.m4
index 116f155e58..709fdf4c25 100644
--- a/graphics/circuit_macros/examples/svg/AudioSVG.m4
+++ b/graphics/circuit_macros/examples/svg/AudioSVG.m4
@@ -1,5 +1,5 @@
.PS
-# `Audio.m4'
+# `AudioSVG.m4'
cct_init(svg_font(sans-serif,11bp__,2bp__))
define(`In123',`
@@ -44,14 +44,6 @@ L:[
thicklines_
] with .sw at last [].se+(0.35,0)
[
- M: microphone
- `"microphone"' at M.s+(0,-0.2) below
- In123(M)
- thinlines_
- arrow <- from M.Circle.n up 0.15 ; "svg_it(Circle)" above
- thicklines_
- ] with .sw at last [].se+(0.4,0)
-[
Z: buzzer
`"buzzer"' at Z.s+(0,-0.2) below
In123(Z)
@@ -69,6 +61,24 @@ R:[
"svg_it(Face)" wid 0.5 at Here above
thicklines_
] with .sw at last [].se+(0.4,0)
+[
+ M: microphone
+ `"microphone"' wid 60bp__ at M.s+(0,-0.2) below
+ In123(M)
+ thinlines_
+ arrow <- from M.Circle.n up 0.15 ; "svg_it(Circle)" above
+ thicklines_
+ ] with .sw at last [].se+(0.4,0)
+[
+ M: microphone(A)
+ "`microphone(A)'" at M.s+(0,-0.2) #below
+ thinlines_
+ arrow <- from M.Head.e+(0,0.05) right 0.2; "svg_it(Head)" wid 40bp__ ljust
+ spline 0.5 <- from M.Head.b down 0.05 right 0.1 then right 0.1
+ "svg_it(Head.b)" ljust
+ arrow <- from M.Stand.s right 0.2; "svg_it(Stand.s)" ljust
+ thicklines_
+ ] with .n at last [].s+(0,-0.2)
[[
E: earphone
`"earphone"' at E.s+(0,-0.2) below
@@ -87,7 +97,7 @@ R:[
"svg_it(C)" at E.C
thicklines_
] with .sw at last [].se+(0.4,0)
-] with .n at (0.5 between L and R,L.s)+(0,-0.2)
+] with .n at (0.5 between L and R,L.s)+(0.5,-0.2)
command "</g>" # end font
.PE
diff --git a/graphics/circuit_macros/examples/svg/Banking.m4 b/graphics/circuit_macros/examples/svg/Banking.m4
deleted file mode 100644
index 630326f867..0000000000
--- a/graphics/circuit_macros/examples/svg/Banking.m4
+++ /dev/null
@@ -1,59 +0,0 @@
-.PS
-#Banking.m4
-
-gen_init
-
- scale = 2.54 # use cm
- svg_font(Arial Black,11 bp__,2 bp__)
- boxwid = 6.8
- boxht = 4.5
- linethick_(1.5)
-
- define(`heading',
- `<tspan font-style=\"bold\" font-size=\"120%\" fill=\"white\">`$1'</tspan>')
- define(`subheading',
- `<tspan fill=\"white\" font-size=\"75%\" font-style=\"bold\">[`$1']</tspan>')
- define(`wtext',`<tspan fill=\"white\">`$1'</tspan>')
-
- C: circle diam 2.6 colored "mediumblue"
- Person: box rad boxht/4 colored "mediumblue" with .n at C.s+(0,C.rad/8) \
- "heading(Personal Banking)" \
- "" \
- "heading(Customer)" \
- "subheading(Person)" \
- "" \
- "wtext(A customer of the bank`,' with)" \
- "wtext(personal bank accounts.)"
-
- A1: arrow thick 1.5 dashed down 3.5 from Person.s
- svg_font(Arial,11 bp__,2 bp__)
- { box invis fill 1 ht 0.4 wid 1.0 "Uses" at A1 }
- command "</g>"
- Internet: box colored "steelblue" \
- "heading(Internet Banking System)" \
- "subheading(Software system)" \
- "" \
- "wtext(Allows customers to view)" \
- "wtext(information about their bank)" \
- "wtext(accounts`,' and make payments.)"
-
- svg_font(Arial,11 bp__,2 bp__)
- A2: arrow thick 1.5 dashed right 5.4 from Internet.e \
- "Sends e-mail" above "using" below
- command "</g>"
- Email: box colored "slategrey" \
- "heading(E-mail System)" \
- "subheading(Software system)" \
- "" \
- "wtext(Internal Microsoft Exchange)" \
- "wtext(e-mail system.)"
-
- A3:arrow thick 1.5 dashed from Email.nw+(0.4,0) to Person.se+(0.3,Person.ht/5)
- svg_font(Arial,11 bp__,2 bp__)
- { box invis fill 1 ht 0.4 wid 3.3 "Sends e-mails to" at A3 }
- command "</g>"
-
-# etc
-
- command "</g>" # font
-.PE
diff --git a/graphics/circuit_macros/examples/svg/ButtonsSVG.m4 b/graphics/circuit_macros/examples/svg/ButtonsSVG.m4
index b9e9c12e69..79c9463639 100644
--- a/graphics/circuit_macros/examples/svg/ButtonsSVG.m4
+++ b/graphics/circuit_macros/examples/svg/ButtonsSVG.m4
@@ -1,7 +1,7 @@
.PS
# ButtonsSVG.m4
gen_init(svg_font(sans-serif,11bp__))
-copy "HOMELIB_/dpictools.pic"
+NeedDpicTools
divert(-1)
#################################################################
diff --git a/graphics/circuit_macros/examples/svg/ConnSVG.m4 b/graphics/circuit_macros/examples/svg/ConnSVG.m4
index 9d828ee48f..7344baeb23 100644
--- a/graphics/circuit_macros/examples/svg/ConnSVG.m4
+++ b/graphics/circuit_macros/examples/svg/ConnSVG.m4
@@ -1,6 +1,6 @@
.PS
# `ConnSVG.m4'
-cct_init(svg_font(sans-serif,11.5bp__))
+cct_init(svg_font(sans-serif,10.5bp__))
T:[
S1: tstrip(U)
@@ -55,13 +55,13 @@ Y: [
] with .sw at (C.e.x-0.3,T.s.y)
B: [
- tbox(V`'svg_sub(2))
- `"tbox(V`'svg_sub(2))"' wid 105bp__ with .nw at last [].sw+(0,-4bp__)
- [ left_;
- tbox(V`'svg_sub(1)) ] with .nw at last [].sw+(0,-0.25)
- `"left_"' at last [].sw +(0,-0.2) ljust `"tbox(V`'svg_sub(1))"' wid 100bp__ \
- ljust
-] with .nw at Y.ne+(0.2,0)
+ tbox(V`'svg_sub(1))
+ { `"tbox'(V`'svg_sub(1))" wid 47bp__ with .nw at last [].sw+(0,-4bp__) }
+ tbox(V`'svg_sub(2),,,<) with .sw at last [].se+(0.75,0)
+ { `"tbox'(V`'svg_sub(2)`,,,&#x3C;)"' at last [].s below }
+ tbox(V`'svg_sub(3),,,<>) with .sw at last [].se+(0.75,0)
+ { `"tbox'(V`'svg_sub(3)`,,,&#x3C;&#x3E;)"' at last [].s below }
+] with .nw at T.sw+(0,-0.2)
command "</g>" # end font
.PE
diff --git a/graphics/circuit_macros/examples/svg/ConnectorsSVG.m4 b/graphics/circuit_macros/examples/svg/ConnectorsSVG.m4
new file mode 100644
index 0000000000..59860a2d1e
--- /dev/null
+++ b/graphics/circuit_macros/examples/svg/ConnectorsSVG.m4
@@ -0,0 +1,30 @@
+.PS
+# ConnectorsSVG.m4
+log_init
+include(icsSVG.m4)
+
+svg_font(sans-serif,8.5bp__)
+#vg_rot_init(test)
+svg_rot_init(ConnectorsSVG)
+
+# ArduinoUno
+# "Arduino Uno Rev 3" at last [].Connector.s below
+ Ar: ArduinoLeonardo #with .sw at last [].se+(0.25,0)
+ "Arduino Leonardo" at last [].Connector.s below
+
+ RPI: RPi with .sw at last [].se+(0.25,0)
+ "Raspberry Pi 4 GPIO" at last [].GPIO.s below
+
+ HD: HDMI_micro with .nw at last [].ne+(0.25,0.5)
+ "Micro" rjust at HD.Base.sw+(0,10bp__) "HDMI" rjust
+
+ S: USB_C_Socket with .sw at (HD.e.x+0.25,RPI.s.y)
+ "USB-C Socket" at S.Base.s below
+ "B12" at S.B12.end above ljust
+ "B1" at S.B1.end above ljust
+ "A1" at S.A1.end above rjust
+ "A12" at S.A12.end above rjust
+
+ command "</g>"
+
+.PE
diff --git a/graphics/circuit_macros/examples/svg/CsourceSVG.m4 b/graphics/circuit_macros/examples/svg/CsourceSVG.m4
index e194f01f8c..c95aaff3d4 100644
--- a/graphics/circuit_macros/examples/svg/CsourceSVG.m4
+++ b/graphics/circuit_macros/examples/svg/CsourceSVG.m4
@@ -4,7 +4,7 @@ cct_init(svg_font(sans-serif,11bp__,2bp__))
# The default line separation is a bit small if the top line contains
# subscripts, so we space stacked lines explicitly:
-define(`stbelow',`at last ""-(0,textht*1.3)')
+define(`stbelow',`at last ""-(0,textht*1.5)')
define(`loffset',`+(textoffset,0)')
define(`roffset',`-(textoffset,0)')
diff --git a/graphics/circuit_macros/examples/svg/FontsSVG.m4 b/graphics/circuit_macros/examples/svg/FontsSVG.m4
index 856014836b..57dcd431a5 100644
--- a/graphics/circuit_macros/examples/svg/FontsSVG.m4
+++ b/graphics/circuit_macros/examples/svg/FontsSVG.m4
@@ -3,10 +3,13 @@
gen_init
textht = 0.2
-define(`ft',`{ svg_font(`$1',`$2',`$3',"`$1'")}; move down 0.5; right_')
+define(`ft',`{ svg_font(`$1',`$2',`$3',"`$1'" ljust)
+ move to (B.w+(2.5,0),Here)
+ svg_font(`$1',`$2',`$3',"ABCDEFG abcdefg" ljust)}
+ move down 0.5; right_')
-B: box wid 4 ht 7
- move to B.nw+(2,-0.5)
+B: box wid 5.5 ht 7
+ move to B.nw+(0.5,-0.5)
ft(Arial)
ft(Helvetica)
@@ -23,6 +26,6 @@ B: box wid 4 ht 7
ft(Arial Black)
ft(Impact)
- textht = 0.1
- "These may be vewer-dependent" above ljust at B.sw
+ textht = 0.12
+ "These may be viewer-dependent" above ljust at B.sw
.PE
diff --git a/graphics/circuit_macros/examples/svg/FusesSVG.m4 b/graphics/circuit_macros/examples/svg/FusesSVG.m4
index a4617e6221..a421c45b57 100644
--- a/graphics/circuit_macros/examples/svg/FusesSVG.m4
+++ b/graphics/circuit_macros/examples/svg/FusesSVG.m4
@@ -14,11 +14,10 @@ movewid = 0.25
move
fuse(,S) ; {"`fuse(,S)'" at last line.c+(0,-0.2)}
move
- fuse(,HB) ; {"`fuse(,HB)'" at last line.c+(0,-0.2)}
+ fuse(,SB) ; {"`fuse(,SB)'" at last line.c+(0,-0.2)}
}
move down; right_
- fuse(,HC,0.5,0.3) ; {"`(,HC,0.5,0.3)'" ljust at last line.start+(0,-0.25)}
- move
+ {
cbreaker; {"`cbreaker'" at last line.c+(0,-0.25)}
move
cbreaker(,R); {"`cbreaker(,R)'" at last line.c+(0,-0.25)}
@@ -28,6 +27,13 @@ movewid = 0.25
cbreaker(,,T); {"`...(,,T)'" at last line.c+(0,-0.25)}
move
cbreaker(,,TS); {"`...(,,TS)'" at last line.c+(0,-0.25)}
+ }
+ move down; right_
+ {
+ fuse(,HB) ; {"`fuse(,HB)'" at last line.c+(0,-0.2)}
+ move
+ fuse(,HC,0.5,0.3) ; {"`(,HC,0.5,0.3)'" ljust at last line.start+(0,-0.25)}
+ }
command "</g>" # end font
.PE
diff --git a/graphics/circuit_macros/examples/svg/GroundsSVG.m4 b/graphics/circuit_macros/examples/svg/GroundsSVG.m4
index 7c4d741d0e..c1a9589f2d 100644
--- a/graphics/circuit_macros/examples/svg/GroundsSVG.m4
+++ b/graphics/circuit_macros/examples/svg/GroundsSVG.m4
@@ -8,15 +8,17 @@ Ground: ground
GT: ground(,T)
move right sep
GF: ground(,,F)
+sep = 0.55
move right sep
GE: ground(,,E)
move right sep
-B: Here+(0,-0.5) ; {
- "`ground'" wid 36bp__ at (Ground,B)
- "`ground'(,T)" at (GT,B)+(0,12bp__)
+B: Here+(0,-0.5)
+D: B+(0,11bp__)
+ { "`ground'" wid 36bp__ at (Ground,B)
+ "`ground'(,T)" at (GT,B)+(0,11bp__)
"(,,F)" at (GF,B)
- "(,,E)" at (GE,B)}
+ "(,,E)" at (GE,D)}
GS: ground(,,S)
@@ -28,13 +30,17 @@ GQ: ground(,,Q)
GL: ground(,,L)
move right sep
GP: ground(,,P)
+ move right sep
+GPA: ground(,T,PA)
C: Here+(0,-0.5)
+E: C+(0,11bp__)
"(,,S)" at (GS,C)
- "(,,S,90)" at (GS90,C)
+ "(,,S,90)" at (GS90,E)
"(,,Q)" at (GQ,C)
- "(,,L)" at (GL,C)
+ "(,,L)" at (GL,E)
"(,,P)" at (GP,C)
+ "(,T,PA)" wid 32bp__ at (GPA,E)
command "</g>" # end font
.PE
diff --git a/graphics/circuit_macros/examples/svg/HeadersSVG.m4 b/graphics/circuit_macros/examples/svg/HeadersSVG.m4
index c222f18650..15e4cda70b 100644
--- a/graphics/circuit_macros/examples/svg/HeadersSVG.m4
+++ b/graphics/circuit_macros/examples/svg/HeadersSVG.m4
@@ -5,7 +5,11 @@ log_init(svg_font(sans-serif,10bp__))
Header
{"svg_it(P1)" wid 15bp__ at last [].P1 rjust
`"Header"' wid 45bp__ at last [].s+(0,-10pt__)
- "svg_it(P2)" at last [].P2 rjust}
+ "svg_it(P2)" at last [].P2 rjust
+ thinlines_
+ arrow <- from last [].Block.ne-(0,0.1) up 0.15 right 0.15
+ "svg_it(Block)" ljust
+ thicklines_ }
Header(2,3,8mm__,10mm__) with .nw at last [].ne+(0.75,-0.05)
{"svg_it(P1)" at last [].P1 rjust
diff --git a/graphics/circuit_macros/examples/svg/MCSVG.m4 b/graphics/circuit_macros/examples/svg/MCSVG.m4
index ef1d215809..cececf42b5 100644
--- a/graphics/circuit_macros/examples/svg/MCSVG.m4
+++ b/graphics/circuit_macros/examples/svg/MCSVG.m4
@@ -3,6 +3,7 @@
cct_init(svg_font(Times,11bp__))
textoffset = 3bp__
+MC:[
dv = dimen_*0.6
dh = dimen_*0.4
backup = dimen_/6
@@ -40,5 +41,57 @@ textoffset = 3bp__
llabel(sprintf("svg_it(v`'svg_sub(&``#''%g;,66%))",64+i))
if i==2 then { Output: dot } else { line down (2-i)*dv }
}}
+]
+
+Three: [
+ dv = dimen_*0.6
+ dh = dimen_
+ define(`swfet',`mosfet(`$1',,dMEDSuBQPy)')
+ define(`swpair',`[ up_
+ BS: swfet(up_ dimen_); { "`$1'" at BS.D-(0,2bp__) rjust }
+ L: line up_ 3*dimen_ from BS.D
+ TS: swfet(up_ dimen_) with .S at Here; { "`$2'" at TS.S+(0,2bp__) rjust }
+ T: TS.D
+ B: BS.S
+ C: L.c
+ ]')
+
+ V1: gap(up_ 5*dimen_,1,A)
+ { "svg_it(V)svg_sub(1)" wid 12bp__ at last arrow.c rjust }
+ line right_ dh/2
+ { C1: capacitor(down_ to (Here,V1.start)); llabel(svg_it(C)svg_sub(1)) }
+ for_(1,3,1,`
+ line right_ dh ifelse(m4x,1,,*5/4)
+ {SP1`'m4x: swpair(svg_it(S`'svg_sub(1`'eval(m4x+3))),
+ svg_it(S`'svg_sub(1`'m4x))) with .T at Here
+ dot(at last [].C + (0,(2-m4x)*dh))
+ line right_ (3-m4x)*dh*5/4
+ inductor(right_ dimen_,L)
+ {sprintf("svg_it(L`'svg_sub(1&`#'%g;,70%))",64+m4x) at last [].n+(0,8bp__)}
+ line down_ (2-m4x)*dimen_*2/3
+ pushdef(`dimen_',dimen_*1.2) inductor(right_ dimen_*3/4) popdef(`dimen_')
+ line down_ (2-m4x)*dimen_/3
+ M: move right_ dimen_/8
+ line up_ (2-m4x)*dimen_/3
+ pushdef(`dimen_',dimen_*1.2) inductor(right_ dimen_*3/4) popdef(`dimen_')
+ line up_ (2-m4x)*dimen_*2/3
+ inductor(right_ dimen_,L)
+ {sprintf("svg_it(L`'svg_sub(2&`#'%g;,70%))",64+m4x) at last [].n+(0,8bp__)}
+ line right_ dimen_/8+(m4x-1)*dh*5/4
+ dot
+ SP2`'m4x: swpair(svg_it(S`'svg_sub(2`'eval(m4x+3))),
+ svg_it(S`'svg_sub(2`'m4x))) with .C at Here+(0,(m4x-2)*dh) }
+ ')
+ "svg_it(T)svg_sub(r)" at M.c+(0,dimen_*2/3)
+ line from V1.start to SP13.B
+ line from SP21.B to SP23.B+(dh*3/4,0)
+ { C2: capacitor(up_ to (Here,V1.end)); llabel(,,svg_it(C`'svg_sub(2))) }
+ line right_ dh/2
+ gap(up_ 5*dimen_,1,A)
+ { "svg_it(V`'svg_sub(2))" wid 12bp__ at last arrow.c ljust }
+ line to SP21.T chop dotrad_ chop 0
+
+] with .nw at MC.sw+(0,-0.2)
+
command "</g>" # end font
.PE
diff --git a/graphics/circuit_macros/examples/svg/Makefile b/graphics/circuit_macros/examples/svg/Makefile
index 5ee232a5ea..4471d513f4 100644
--- a/graphics/circuit_macros/examples/svg/Makefile
+++ b/graphics/circuit_macros/examples/svg/Makefile
@@ -1,14 +1,21 @@
LIBDIR = $$HOME/lib
M4LIBS = svg.m4 SVGconfig.m4
+M4LIBS = svg.m4
# To process a single file, copy it to test.m4 and type "make tst"
# to produce tstSVG.html
DPIC = dpic
-#DPIC = $$HOME/dpic/bu*/p2c/ftp/dpic
-#DPIC = $$HOME/dpic/bu*/test/dpic
-#DPIC = $$HOME/dpic/dev/p2c/ftp/dpic
+#DPIC = $$HOME/dpic/build/p2c/ftp/dpic
+#DPIC = ../../../dpic/build/p2c/ftp/dpic
#DPIC = ../../../dpic/bison/dpic
+#DPIC = ../../../dpic/bdev/dpic
+
+# To test the Windows executable. Change these as needed for the operating
+# system. NOTE: AntiqueClockSVG.m4 and Connectors.m4 use awk and sed which
+# do not work at present with the Windows version.
+# M4LIBS = svg.m4 windows.m4
+# DPIC = ../../../dpic/bison/distsrc/Windows/dpic
.SUFFIXES: .pic .svg .m4
.pic.svg:
@@ -23,8 +30,9 @@ CCTSVG = \
AdderSVG.svg AlogixSVG.svg ABlogixSVG.svg AmpTableSVG.svg AntennasSVG.svg \
AntiqueClockSVG.svg \ AudioSVG.svg \
BipSVG.svg BtreeSVG.svg ByteSVG.svg ButtonsSVG.svg \
- CanLogicSVG.svg CctTableSVG.svg ConnSVG.svg ContactSVG.svg ContactsSVG.svg \
- CountingSVG.svg CrossbarSVG.svg CrowSVG.svg CrullerSVG.svg CsourceSVG.svg \
+ CanLogicSVG.svg CctTableSVG.svg ConnSVG.svg ConnectorsSVG.svg \
+ ContactSVG.svg ContactsSVG.svg \
+ CountingSVG.svg CrossbarSVG.svg CrowSVG.svg CsourceSVG.svg \
DecoderSVG.svg DemultiplexerSVG.svg DiniSVG.svg DiodesSVG.svg DriveSVG.svg \
EmarrowsSVG.svg \
FlowSVG.svg FontsSVG.svg FusesSVG.svg GrayCodeSVG.svg GroundsSVG.svg \
@@ -68,6 +76,7 @@ tst:
test.pic:
if test -f test.pic ; then echo "Usage: make clean tst" ; fi
m4 $(M4LIBS) test.m4 | $(SED) > test.pic
+ m4 $(M4LIBS) test.m4 | $(SED) > test.pic
tstSVG.html: tstSVG.htmx $(TEST).svg
Version=`sed -e 's/Version //' $(LIBDIR)/doc/Version.tex` ; \
@@ -78,7 +87,14 @@ tstSVG.html: tstSVG.htmx $(TEST).svg
xst: Incleps.png
-AntiqueClockSVG.svg:
+AntiqueClockSVG.svg ConnectorsSVG.svg:
+ m4 $(M4LIBS) $*.m4 | sed -e '/^\%/d' > $*.pic
+ $(DPIC) -v $*.pic > $*.svg
+ m4 $(M4LIBS) $*.m4 | sed -e '/^\%/d' > $*.pic
+ $(DPIC) -v $*.pic > $*.svg
+ grep '<\!-- width' $*.svg | sed -e 's%<\!-- *%%' -e 's% *-->%%' > $*.siz
+
+xntiqueClockSVG.svg:
m4 $(M4LIBS) AntiqueClockSVG.m4 | sed -e '/^\%/d' > AntiqueClockSVG.pic
$(DPIC) -v AntiqueClockSVG.pic > AntiqueClockSVG.svg
m4 $(M4LIBS) AntiqueClockSVG.m4 | sed -e '/^\%/d' > AntiqueClockSVG.pic
@@ -96,8 +112,9 @@ Incleps.png:
clean:
@printf "\n svg clean:\n"
rm -f *.svg *.dim *.ps *log *.siz *.pic examplesSVG.html Incleps.png
- rm -f tstSVG.html
+ rm -f tstSVG.html copy_tmp__
@printf "\n"
clobber: clean
+ (cd dev; make clobber)
rm -f test.m4
diff --git a/graphics/circuit_macros/examples/svg/MixerSVG.m4 b/graphics/circuit_macros/examples/svg/MixerSVG.m4
index aa778337b3..1712e017ed 100644
--- a/graphics/circuit_macros/examples/svg/MixerSVG.m4
+++ b/graphics/circuit_macros/examples/svg/MixerSVG.m4
@@ -1,7 +1,7 @@
.PS
#`MixerSVG.m4
# Showing VMOS mosfet and custom transformer'
-cct_init(svg_font(sans-serif,11bp__,1bp__))
+cct_init(svg_font(sans-serif,10.5bp__,1bp__))
define(`dimen_',0.6)
define(`elen_',0.75)
diff --git a/graphics/circuit_macros/examples/svg/PconnSVG.m4 b/graphics/circuit_macros/examples/svg/PconnSVG.m4
index 348a619317..b0fdb65e80 100644
--- a/graphics/circuit_macros/examples/svg/PconnSVG.m4
+++ b/graphics/circuit_macros/examples/svg/PconnSVG.m4
@@ -19,27 +19,23 @@ P1: [
arrow from G.w to C1.G.e
arrow from G.e to C2.G.w
`"(,AF)"' at last [].s below
- C03: pconnex(,AC) with .w at C2.e+(0.2,0)
+ C03: pconnex(,AC) with .w at C2.e+(0.25,0)
`"(,AC)"' at last [].s below
C3: pconnex(,ACF) with .w at last [].e+(0.2,0)
`"(,ACF)"' at last [].s below
- C5: pconnex(U,D) with .w at last [].e+(0.2,0)
+ C5: pconnex(U,D) with .w at last [].e+(0.25,0)
`"(U,D)"' at last [].s below
- C6: pconnex(U,DF) with .w at last [].e+(0.2,0)
+ C6: pconnex(U,DF) with .w at last [].e+(0.25,0)
`"(U,DF)"' at last [].s below
- C7: pconnex(U,J) with .w at last [].e+(0.2,0)
+ C7: pconnex(U,J) with .w at last [].e+(0.25,0)
`"(U,J)"' at last [].s below
- C8: pconnex(U,JF) with .w at last [].e+(0.2,0)
+ C8: pconnex(U,JF) with .w at last [].e+(0.25,0)
`"(U,JF)"' wid 21bp__ at last [].s below
]
P2: [
- C4: pconnex(,P)
- `"(,P)"' at last [].s below
- C11: pconnex(,PF) with .w at last [].e+(0.2,0)
- `"(,PF)"' at C11.s below
- C9: pconnex(,G) with .w at C11.e+(0.2,0)
+ C9: pconnex(,G)
`"(,G)"' at last [].s below
C91: pconnex(,GF) with .w at last [].e+(0.2,0)
`"(,GF)"' at last [].s below
@@ -47,7 +43,17 @@ P2: [
`"(L,GF)"' at last [].s below
C10: pconnex(,GC) with .w at last [].e + (0.2,0)
`"(,GC)"' at last [].s below
-] with .nw at P1.C1.sw + (0,-0.25)
+ C12: pconnex(,GCF) with .w at last [].e + (0.2,0)
+ `"(,GCF)"' at last [].s below
+] with .nw at P1.C1.sw + (0,-0.35)
+
+P3:[
+ C4: pconnex(,P)
+ `"(,P)"' at last [].s below
+ C11: pconnex(,PF) with .w at last [].e+(0.2,0)
+ `"(,PF)"' at C11.s below
+] with .nw at P2.C9.sw + (0,-0.35)
+
command "</g>" # end font
.PE
diff --git a/graphics/circuit_macros/examples/svg/RectifiersSVG.m4 b/graphics/circuit_macros/examples/svg/RectifiersSVG.m4
index 3329094082..c6473744eb 100644
--- a/graphics/circuit_macros/examples/svg/RectifiersSVG.m4
+++ b/graphics/circuit_macros/examples/svg/RectifiersSVG.m4
@@ -60,20 +60,21 @@ Threephase: [ linethick_(1)
]
Cct3:[
- No: dot; {"N`'svg_sub(o)" below rjust }
- { inductor(to Here+(Rect_(dimen_,60)),W); E2: "e`'svg_sub(2)" ljust }
- { inductor(to Here+(Rect_(dimen_,-60)),W); E3: "e`'svg_sub(3)" ljust }
- { inductor(from No-(dimen_,0) to No,W)
- E1: "e`'svg_sub(1)" above at last line.start }
+ No: dot; {"N`'svg_sub(o)" at last [].s below rjust }
+ { inductor(to Here+(Rect_(dimen_,60)),W); E2: Here; "e`'svg_sub(2)" ljust }
+ { inductor(to Here+(Rect_(dimen_,-60)),W); E3: Here; "e`'svg_sub(3)" ljust }
+ { inductor(from No-(dimen_,0) to No,W); E1: last line.start
+ "e`'svg_sub(1)" at E1 above }
D3: diode(down_ from E3); b_current(i`'svg_sub(3),rjust)
llabel(,,D`'svg_sub(3))
- line from E1 to (E1,D3.start)
+ line from E1 to (E1.x,D3.start.y+dimen_/3) then right_ (E3.x+E1.x)/2-E1.x \
+ then down_ dimen_/3
D1: diode(down_); b_current(i`'svg_sub(1),rjust); llabel(,,D`'svg_sub(1))
line from E2 left E2.x-E1.x+dimen_/3 then down E2.y-E3.y \
- then to 0.5 between D1.start and D3.start
+ then to 2 between D3.start and D1.start
D2: diode(down_); b_current(i`'svg_sub(2),rjust); llabel(,,D`'svg_sub(2))
- { line from D1.end to D3.end }
- dot
+ { line from D2.end to D3.end }
+ dot(at D1.end)
arrowline(down elen_/2); rlabel(,i`'svg_sub(L))
resistor(right_ elen_); rlabel(+,e`'svg_sub(L),-); llabel(,R)
line to (Here,No) then to No
diff --git a/graphics/circuit_macros/examples/svg/SVGconfig.m4 b/graphics/circuit_macros/examples/svg/SVGconfig.m4
index 372a93937b..e8aa1fa3ec 100644
--- a/graphics/circuit_macros/examples/svg/SVGconfig.m4
+++ b/graphics/circuit_macros/examples/svg/SVGconfig.m4
@@ -50,21 +50,9 @@ define(`SIdefaults',`
')
define(`local_init',`
+`#' local init begin
scaledefaults(1.1)
+`#' local init end
')
-# If the variable dptextratio is not found you don't have
-# dpic version 2018.05.15 or later. In that case, change
-# dptextratio to 1 in the following (or delete *dptextrario ).
-define(`svg_font',`
-command "<g patsubst(ifelse(`$1',,,
-index(`$1',font),0,`$1',
-index(`$1',style),0,`$1',
-style="font-family:`$1'")
-,",\\")>"
- ifelse(`$2',,,`textht=(`$2')*dptextratio')
- ifelse(`$3',,,`textoffset=`$3'')
- `$4'
- ifelse(`$4',,,`command "</g>"')')
-
divert(0)dnl
diff --git a/graphics/circuit_macros/examples/svg/ShiftRSVG.m4 b/graphics/circuit_macros/examples/svg/ShiftRSVG.m4
index 022f4ced9f..9a0b56d523 100644
--- a/graphics/circuit_macros/examples/svg/ShiftRSVG.m4
+++ b/graphics/circuit_macros/examples/svg/ShiftRSVG.m4
@@ -21,8 +21,8 @@ define(`customFF',`FlipFlopX(wid 10*L_unit ht FF_ht*L_unit,,
line from T to (T,F0.W3) then to F0.W3.end
NCLR: NOT_gate(right T.x-Serial.x from (Serial,F0.S1.end),N)
- "CLEAR" at NCLR.start rjust
- line left textht*5 from last ""+(-textoffset,0.8*textht)
+ "CLEAR" wid 33bp__ at NCLR.start rjust
+ line left last "".wid with .c at last "".n+(0,1.5bp__)
CLK: NOT_gate(right T.x-Serial.x from NCLR.start+(0,-BUF_ht*3/2*L_unit))
"CLOCK" at CLK.start rjust
diff --git a/graphics/circuit_macros/examples/svg/SourcesSVG.m4 b/graphics/circuit_macros/examples/svg/SourcesSVG.m4
index 8096317a5d..2a611fe681 100644
--- a/graphics/circuit_macros/examples/svg/SourcesSVG.m4
+++ b/graphics/circuit_macros/examples/svg/SourcesSVG.m4
@@ -15,7 +15,8 @@ define(`NL',`; move down $1; right_')
{source(,X) ; move ; "`source(,X)'" ljust} NL
{source(,F) ; move ; "`source(,F)'" ljust} NL
{source(,G) ; move ; "`source(,G)'" ljust} NL
- {source(,Q) ; move ; "`source(,Q)'" ljust}
+ {source(,Q) ; move ; "`source(,Q)'" ljust} NL(0.3)
+ {proximity ; move ; "`proximity" ljust "= consource(,P)'" ljust}
}
move right_ 2.0
{
@@ -27,8 +28,8 @@ define(`NL',`; move down $1; right_')
{source(,S) ; move ; "`source(,S)'" ljust} NL
{source(,T) ; move ; "`source(,T)'" ljust} NL
{source(,L) ; move ; "`source(,L)'" ljust} NL
- {source(,B) ; move ; "`source(,B)'" ljust} NL(moveht*0.8)
- {nullator ; move ; "`nullator'" ljust} NL(moveht*0.6)
+ {source(,B) ; move ; "`source(,B)'" ljust} NL
+ {nullator ; move ; "`nullator'" ljust} NL(moveht*0.8)
{norator ; move ; "`norator'" ljust}
}
move right_ 2.0
diff --git a/graphics/circuit_macros/examples/svg/SwitchesSVG.m4 b/graphics/circuit_macros/examples/svg/SwitchesSVG.m4
index 04fc2f52c5..95c9f2b2ca 100644
--- a/graphics/circuit_macros/examples/svg/SwitchesSVG.m4
+++ b/graphics/circuit_macros/examples/svg/SwitchesSVG.m4
@@ -101,6 +101,15 @@ movewid = 0.25
dswitch(,,WBRHH); {"svg_tt(`(,,WBRHH)')" at (last [],S)}
}
# Row 7
+ move down moveht*5/4; right_; {
+ move down 2bp__; right_
+ dswitch(,,WBPr); {S: "svg_tt(`(,,WBPr)')" at last [].s+(0,-10bp__)}
+ move right_
+ dswitch(,,WBPrT); {S: "svg_tt(`(,,WBPrT)')" at last [].s+(0,-10bp__)}
+ move down_ 6bp__ then right_
+ dswitch(,,WBPrM); {S: "svg_tt(`(,,WBPrM)')" at last [].s+(0,-10bp__)}
+ }
+# Row 8
move down; right_; {
dswitch(,,WBMMR); {S: "svg_tt(`(,,WBMMR)')" at last [].s+(0,-10bp__)}
move right_
diff --git a/graphics/circuit_macros/examples/svg/TimerSVG.m4 b/graphics/circuit_macros/examples/svg/TimerSVG.m4
index dcdb2cc477..d1a0c2ffa1 100644
--- a/graphics/circuit_macros/examples/svg/TimerSVG.m4
+++ b/graphics/circuit_macros/examples/svg/TimerSVG.m4
@@ -1,6 +1,6 @@
.PS
# TimerSVG.m4
-cct_init(svg_font(sans-serif,11bp__,1bp__))
+cct_init(svg_font(sans-serif,10.5bp__))
define(`ic555',`[Chip: box ht boxwid wid boxwid "555"
P7: "7" ljust at 1/6<Chip.sw,Chip.nw>
diff --git a/graphics/circuit_macros/examples/svg/TubediagsSVG.m4 b/graphics/circuit_macros/examples/svg/TubediagsSVG.m4
index cfc87b0a6a..6409325558 100644
--- a/graphics/circuit_macros/examples/svg/TubediagsSVG.m4
+++ b/graphics/circuit_macros/examples/svg/TubediagsSVG.m4
@@ -1,7 +1,7 @@
.PS
# TubediagsSVG.m4
-cct_init(svg_font(sans-serif,11bp__,2bp__))
+cct_init(svg_font(sans-serif,10bp__,2bp__))
include(../tubedefs.m4)
# Some base diagrams
diff --git a/graphics/circuit_macros/examples/svg/VariableSVG.m4 b/graphics/circuit_macros/examples/svg/VariableSVG.m4
index 642b81466a..ccab653936 100644
--- a/graphics/circuit_macros/examples/svg/VariableSVG.m4
+++ b/graphics/circuit_macros/examples/svg/VariableSVG.m4
@@ -1,36 +1,29 @@
.PS
-# `Variable.m4'
-cct_init(svg_font(sans-serif,11bp__))
+# `VariableSVG.m4'
+cct_init
-define(`elen_',dimen_)
-down_
-[ { variable(`capacitor') }
- move right; down_
- { variable(`resistor',uN) }
- move right; down_
- { variable(`capacitor(,C)') }
- move right; down_
- { variable(`inductor') }
- move right; down_
- { variable(`inductor(,W)') }
+define(`elen_',dimen_); down_
+[ { variable(`resistor',A) }; {"svg_tt(A)" at last line.end below}; move right
+ { variable(`resistor',N) }; {"svg_tt(N)" at last line.end below}; move right
+ { variable(`resistor',uN) }; {"svg_tt(uN)" at last line.end below}; move right
+ { variable(`resistor',NN) }; {"svg_tt(uN)" at last line.end below}; move right
+ { variable(`resistor',uNN) }; {"svg_tt(uNN)" at last line.end below}
]
[
skp = 0.4
hskip = linewid*0.5
cskip = hskip
Orig: Here
- { move right cskip
- move right elen_; move up 0.15 then down 0.15 then right_ hskip
- line invis right_ elen_ "C"; move right_ hskip
- line invis right_ elen_ "S" }
+ { move right cskip+elen_+hskip
+ line invis right_ elen_ "svg_tt(C)"; move right_ hskip
+ { move up_ 0.25 }
+ line invis right_ elen_ "svg_tt(S)" }
Loopover_(`char',
`move down skp ifelse(char,A,*0.5)
- { line invis right_ cskip "char"
+ { line invis right_ cskip "svg_tt(char)"
variable(`capacitor(,C)',char); move right_ hskip
variable(`capacitor(,C)',char`'C); move right_ hskip
variable(`capacitor(,C)',char`'S) }',
A,P,L,N)
] with .w at last [].e+(0.4,0)
-
- command "</g>" # end font
.PE
diff --git a/graphics/circuit_macros/examples/svg/ex01SVG.m4 b/graphics/circuit_macros/examples/svg/ex01SVG.m4
index 535bdec795..3a20d90a18 100644
--- a/graphics/circuit_macros/examples/svg/ex01SVG.m4
+++ b/graphics/circuit_macros/examples/svg/ex01SVG.m4
@@ -1,6 +1,6 @@
.PS
# ex01.m4
-cct_init(svg_font(sans-serif,11bp__))
+cct_init(svg_font(sans-serif,10.5bp__))
linewid = linewid*1.5 # let's make the circuit elements bigger than usual
define(`elen_',linewid) # but not longer
diff --git a/graphics/circuit_macros/examples/svg/ex09SVG.m4 b/graphics/circuit_macros/examples/svg/ex09SVG.m4
index 507245235e..b267c68ea0 100644
--- a/graphics/circuit_macros/examples/svg/ex09SVG.m4
+++ b/graphics/circuit_macros/examples/svg/ex09SVG.m4
@@ -65,7 +65,7 @@ define(`bdot',
move right 0.8
# Upper left diagram
- spacer
+ spacer
# Lower left diagram
[ define(`lwid',`29bp__')
@@ -76,18 +76,21 @@ Ctr: 0.5 between A and B
L: move left 0.85*sk from A
linethick_(1)
- dimension_(from A to B,0.5*sk,label,lwid,0.1*sk)
- "`dimension_(from A to B,0.5,label,29bp__,0.1)'" wid 90 \
- with .w at (L.end,A +(0,-9))
+ dimension_(from A to B,0.5*sk,svg_it(label),lwid,0.1*sk)
+ "`dimension_(from A to B,0.5,label,29bp__,0.1)'" wid 70 \
+ with .w at (L.end.x+2,A.y-10)
+ move down_ 4 from last ""
thinlines_
- arrow from A to B chop 0.05*sk "linespec" below
- dimension_(up_ 0.5*sk from A,0.2*sk,"offset" rjust,,,->)
- dimension_(up_ 0.1*sk from B,-0.2*sk," tic offset" ljust)
- dimension_(up_ 0.1*sk from B+(0,0.5*sk),-0.2*sk," tic offset" ljust)
+ arrow from A to B chop 0.05*sk "svg_it(linespec)" below
+ dimension_(up_ 0.5*sk from A,0.2*sk,"svg_it(offset)" rjust,,,->)
+ dimension_(up_ 0.1*sk from B,-0.2*sk," svg_it(tic offset)" ljust)
+ dimension_(up_ 0.1*sk from B+(0,0.5*sk),-0.2*sk,
+ " svg_it(tic offset)" ljust)
dimension_(from Ctr+(-lwid/2,0.5*sk) right lwid,0.2*sk,
- "blank width" above)
-] with .nw at last [].sw+(0,-0.7*sk)
+ "svg_it(blank width)" above)
+] with .nw at last [].sw+(0,-0.4*sk)
+#showbox_
# Upper right diagram
[ A: bdot(at (0,0),A, above rjust)
@@ -104,23 +107,22 @@ T: C+(-0.45*sk,-0.5*sk)
dimension_(from C to D chop dotrad_,,svg_it(T`'svg_sub(15)),15bp__)
arcdimension_(from C to D with .c at 0.5 between A and B,12bp__,
svg_it(C) to svg_it(D),34bp__)
-Q: C+(-9,-9)
+Q: C+(-9,-15)
`define' leftparagraph { [ baselineskip = textht*1.5; { move right $1 }
for i = 2 to $+ do {
move to Here+(0,-baselineskip)
- exec sprintf("{ `\"$%g \"' ljust }; ",i) } ] }
-
-define(`svg_comma',`svg_symbol(&`#'44;)')
-leftparagraph(5.7*scale; baselineskip = 1.5*textht,
- `dimension_(from A to B,0.3,svg_it(AB),20bp__)',
- `dimension_(from C to B,,svg_it(X),16bp__)',
- `dimension_(from C to A,0.3,svg_it(CA),14bp__,,->)',
- `dimension_(from D to B,-0.3,"svg_it(DB)" ljust)',
- `dimension_(from C to D chop dotrad_,,svg_it(T`'svg_sub(15)),15bp__)',
+ exec sprintf("{ `\"$%g \"' wid 4.5*scale ljust }; ",i) } ] }
+
+leftparagraph(1.7*scale; baselineskip = 1.5*textht,
+ `dimension_(from A to B,0.3,AB,20bp__)',
+ `dimension_(from C to B,,X,16bp__)',
+ `dimension_(from C to A,0.3,CA,14bp__,,->)',
+ `dimension_(from D to B,-0.3,"DB" ljust)',
+ `dimension_(from C to D chop dotrad_,,T`'svg_sub(15),15bp__)',
`arcdimension_'svg_symbol(&`#'40;)`from C to D with .c at 0.5 \
between A and B'svg_comma`12bp__'svg_comma,
- svg_ensp `svg_it(C) to svg_it(D)'svg_comma`34bp__'svg_symbol(&`#'41;)
+ svg_ensp `C to D'svg_comma`34bp__'svg_symbol(&`#'41;)
) with .nw at Q
] with .nw at 1st [].ne+(1.7*sk,0)
diff --git a/graphics/circuit_macros/examples/svg/examplesSVG.htmx b/graphics/circuit_macros/examples/svg/examplesSVG.htmx
index 91bc93f48e..825c1d5cf4 100644
--- a/graphics/circuit_macros/examples/svg/examplesSVG.htmx
+++ b/graphics/circuit_macros/examples/svg/examplesSVG.htmx
@@ -107,16 +107,29 @@ There are a number of other issues:
They are subject to change:
<ul>
<li>
- m4tt`'svg_font(</g>font-face,height,textoffset,dpic commands`'m4tt)</g>:
- Change font face, size, and dpic textoffset parameter.
+ m4tt`'svg_font(</g>font-face,nominal size[:dptextratio],textoffset,
+ dpic commands`'m4tt)</g>:
+ Change font face, size, textratio and dpic textoffset parameters.
+ Change font face and dpic m4tt`'textht</g>, m4tt`'dptextratio</g>,
+ and m4tt`'textoffset</g> parameters.
If arg4 is blank, the font is changed and
requires m4tt`'command "&lt;/g&gt;"</g> to cancel the font change.
+ <br>
+ Note:
+ Nominal height = text height in drawing units; actual height =
+ nominal ht x m4tt`'dptextratio</g>.
+ <br>
Examples: <br>
m4tt`'svg_font(Times)</g><br>
+ m4tt`'svg_font(Times,14bp__)</g><br>
+ m4tt`'svg_font(sans-serif,14bp__:0.71)</g><br>
m4tt`'svg_font(Times,11bp__,1bp__,"text" at A)</g><br>
m4tt`'svg_font(font-family="Times")</g><br>
m4tt`'svg_font(font-family="Times" font-style="italic")</g><br>
m4tt`'svg_font(style="font-family:Times; font-style:italic")</g>
+ <li>m4tt svgfontratio(</g>font name`'m4tt)</g>;
+ Reasonable m4tt`'dptextratio</g> value for common fonts, used
+ by m4tt`'svg_font</g>.
<li>m4tt svg_tspan(</g>text attributes, text`'m4tt)</g>;
e.g. m4tt`'svg_tspan(font-style="italic" font-size="75%",XYZ)</g>
<li>m4tt svg_it(</g>text`'m4tt)</g>: for italics
@@ -131,6 +144,13 @@ There are a number of other issues:
subscript
<li>m4tt svg_sup(</g>text, size percent, y displ, x displ`'m4tt)</g>:
superscript
+ <li>m4tt svg_rot(</g>degrees, "text" [at position]`'m4tt)</g>:
+ Rotate text degrees (default 90) ccw.
+ Requires m4tt`'svg_rot_init(</g>filename`'m4tt)</g> and the source
+ must be processed twice.
+ <li>m4tt svg_rot_init(</g>filename`'m4tt)</g>:
+ filename is the basename of the output of
+ m4tt`'dpic -v filename.pic > filename.svg`'m4tt
<li>m4tt svg_symbol(</g>text`'m4tt)</g>: allow quoted pound sign in text,
e.g., m4tt`'svg_symbol(10&&#96;&#35;&#39;176;)</g> produces 10&#176;
<li>m4tt svgLink(</g>URL, drawing object, m4tt[B])</g>:
@@ -140,103 +160,63 @@ There are a number of other issues:
arg 3 = B)
<li>m4tt svgLinkString</g> as above but for strings attached to objects
<li> Greek and other symbols:
+
+<table cellpadding="0" cellspacing="0" width="100%" >
<table cellpadding="0" cellspacing="0" width="100%" >
<tr>
-<td width="7%"> m4tt svg_alpha</g>
- <td align="left"> changecom(,)&`#'945;changecom(`#')
-<td width="7%"> m4tt svg_beta</g>
- <td align="left"> changecom(,)&`#'946;changecom(`#')
-<td width="7%"> m4tt svg_chi</g>
- <td align="left"> changecom(,)&`#'967;changecom(`#')
-<td width="7%"> m4tt svg_comma</g>
- <td align="left"> changecom(,)&`#'44;changecom(`#')
-<td width="7%"> m4tt svg_Delta</g>
- <td align="left"> changecom(,)&`#'916;changecom(`#')
-<td width="7%"> m4tt svg_delta</g>
- <td align="left"> changecom(,)&`#'948;changecom(`#')
-<td width="7%"> m4tt svg_epsilon</g>
- <td align="left"> changecom(,)&`#'949;changecom(`#')
-<td width="7%"> m4tt svg_eta</g>
- <td align="left"> changecom(,)&`#'951;changecom(`#')
+<td width="8%"> m4tt svg_alpha</g> <td align="left"> changecom(,)&`#'945;changecom(`#')
+<td width="8%"> m4tt svg_beta</g> <td align="left"> changecom(,)&`#'946;changecom(`#')
+<td width="8%"> m4tt svg_Gamma</g> <td align="left"> changecom(,)&`#'915;changecom(`#')
+<td width="8%"> m4tt svg_gamma</g> <td align="left"> changecom(,)&`#'947;changecom(`#')
+<td width="8%"> m4tt svg_Delta</g> <td align="left"> changecom(,)&`#'916;changecom(`#')
+<td width="8%"> m4tt svg_delta</g> <td align="left"> changecom(,)&`#'948;changecom(`#')
+<td width="10%"> m4tt svg_epsilon</g> <td align="left"> changecom(,)&`#'949;changecom(`#')
+<td width="8%"> m4tt svg_zeta</g> <td align="left"> changecom(,)&`#'950;changecom(`#')
<tr>
-<td width="7%"> m4tt svg_Gamma</g>
- <td align="left"> changecom(,)&`#'915;changecom(`#')
-<td width="7%"> m4tt svg_gamma</g>
- <td align="left"> changecom(,)&`#'947;changecom(`#')
-<td width="7%"> m4tt svg_iota</g>
- <td align="left"> changecom(,)&`#'953;changecom(`#')
-<td width="7%"> m4tt svg_kappa</g>
- <td align="left"> changecom(,)&`#'954;changecom(`#')
-<td width="7%"> m4tt svg_Lambda</g>
- <td align="left"> changecom(,)&`#'923;changecom(`#')
-<td width="7%"> m4tt svg_lambda</g>
- <td align="left"> changecom(,)&`#'955;changecom(`#')
-<td width="7%"> m4tt svg_micro</g>
- <td align="left"> changecom(,)&`#'956;changecom(`#')
-<td width="7%"> m4tt svg_mu</g>
- <td align="left"> changecom(,)&`#'956;changecom(`#')
+<td width="8%"> m4tt svg_eta</g> <td align="left"> changecom(,)&`#'951;changecom(`#')
+<td width="8%"> m4tt svg_Theta</g> <td align="left"> changecom(,)&`#'920;changecom(`#')
+<td width="8%"> m4tt svg_theta</g> <td align="left"> changecom(,)&`#'952;changecom(`#')
+<td width="8%"> m4tt svg_iota</g> <td align="left"> changecom(,)&`#'953;changecom(`#')
+<td width="8%"> m4tt svg_kappa</g> <td align="left"> changecom(,)&`#'954;changecom(`#')
+<td width="8%"> m4tt svg_Lambda</g> <td align="left"> changecom(,)&`#'923;changecom(`#')
+<td width="8%"> m4tt svg_lambda</g> <td align="left"> changecom(,)&`#'955;changecom(`#')
+<td width="8%"> m4tt svg_mu</g> <td align="left"> changecom(,)&`#'956;changecom(`#')
<tr>
-<td width="7%"> m4tt svg_nu</g>
- <td align="left"> changecom(,)&`#'957;changecom(`#')
-<td width="7%"> m4tt svg_ohm</g>
- <td align="left"> changecom(,)&`#'937;changecom(`#')
-<td width="7%"> m4tt svg_Omega</g>
- <td align="left"> changecom(,)&`#'937;changecom(`#')
-<td width="7%"> m4tt svg_omega</g>
- <td align="left"> changecom(,)&`#'969;changecom(`#')
-<td width="7%"> m4tt svg_Phi</g>
- <td align="left"> changecom(,)&`#'934;changecom(`#')
-<td width="7%"> m4tt svg_phi</g>
- <td align="left"> changecom(,)&`#'966;changecom(`#')
-<td width="7%"> m4tt svg_Pi</g>
- <td align="left"> changecom(,)&`#'928;changecom(`#')
-<td width="7%"> m4tt svg_pi</g>
- <td align="left"> changecom(,)&`#'960;changecom(`#')
+<td width="8%"> m4tt svg_nu</g> <td align="left"> changecom(,)&`#'957;changecom(`#')
+<td width="8%"> m4tt svg_Xi</g> <td align="left"> changecom(,)&`#'926;changecom(`#')
+<td width="8%"> m4tt svg_xi</g> <td align="left"> changecom(,)&`#'958;changecom(`#')
+<td width="8%"> m4tt svg_Pi</g> <td align="left"> changecom(,)&`#'928;changecom(`#')
+<td width="8%"> m4tt svg_pi</g> <td align="left"> changecom(,)&`#'960;changecom(`#')
+<td width="8%"> m4tt svg_rho</g> <td align="left"> changecom(,)&`#'961;changecom(`#')
+<td width="8%"> m4tt svg_Sigma</g> <td align="left"> changecom(,)&`#'931;changecom(`#')
+<td width="8%"> m4tt svg_sigma</g> <td align="left"> changecom(,)&`#'963;changecom(`#')
<tr>
-<td width="7%"> m4tt svg_Psi</g>
- <td align="left"> changecom(,)&`#'936;changecom(`#')
-<td width="7%"> m4tt svg_psi</g>
- <td align="left"> changecom(,)&`#'968;changecom(`#')
-<td width="7%"> m4tt svg_rho</g>
- <td align="left"> changecom(,)&`#'961;changecom(`#')
-<td width="7%"> m4tt svg_Sigma</g>
- <td align="left"> changecom(,)&`#'931;changecom(`#')
-<td width="7%"> m4tt svg_sigma</g>
- <td align="left"> changecom(,)&`#'963;changecom(`#')
-<td width="7%"> m4tt svg_tau</g>
- <td align="left"> changecom(,)&`#'964;changecom(`#')
-<td width="7%"> m4tt svg_Theta</g>
- <td align="left"> changecom(,)&`#'920;changecom(`#')
-<td width="7%"> m4tt svg_theta</g>
- <td align="left"> changecom(,)&`#'952;changecom(`#')
+<td width="8%"> m4tt svg_tau</g> <td align="left"> changecom(,)&`#'964;changecom(`#')
+<td width="10%"> m4tt svg_upsilon</g> <td align="left"> changecom(,)&`#'965;changecom(`#')
+<td width="8%"> m4tt svg_Phi</g> <td align="left"> changecom(,)&`#'934;changecom(`#')
+<td width="8%"> m4tt svg_phi</g> <td align="left"> changecom(,)&`#'966;changecom(`#')
+<td width="8%"> m4tt svg_chi</g> <td align="left"> changecom(,)&`#'967;changecom(`#')
+<td width="8%"> m4tt svg_Psi</g> <td align="left"> changecom(,)&`#'936;changecom(`#')
+<td width="8%"> m4tt svg_psi</g> <td align="left"> changecom(,)&`#'968;changecom(`#')
+<td width="8%"> m4tt svg_Omega</g> <td align="left"> changecom(,)&`#'937;changecom(`#')
<tr>
-<td width="7%"> m4tt svg_upsilon</g>
- <td align="left"> changecom(,)&`#'965;changecom(`#')
-<td width="7%"> m4tt svg_Xi</g>
- <td align="left"> changecom(,)&`#'926;changecom(`#')
-<td width="7%"> m4tt svg_xi</g>
- <td align="left"> changecom(,)&`#'958;changecom(`#')
-<td width="7%"> m4tt svg_zeta</g>
- <td align="left"> changecom(,)&`#'950;changecom(`#')
-<td width="7%"> m4tt svg_lt</g>
- <td align="left"> changecom(,)&`#'60;changecom(`#')
-<td width="7%"> m4tt svg_gt</g>
- <td align="left"> changecom(,)&`#'62;changecom(`#')
-<td width="7%"> m4tt svg_leq</g>
- <td align="left"> changecom(,)&`#'8804;changecom(`#')
-<td width="7%"> m4tt svg_geq</g>
- <td align="left"> changecom(,)&`#'8805;changecom(`#')
+<td width="8%"> m4tt svg_omega</g> <td align="left"> changecom(,)&`#'969;changecom(`#')
+<td width="8%"> m4tt svg_micro</g> <td align="left"> changecom(,)&`#'956;changecom(`#')
+<td width="8%"> m4tt svg_ohm</g> <td align="left"> changecom(,)&`#'937;changecom(`#')
+<td width="8%"> m4tt svg_lt</g> <td align="left"> changecom(,)&`#'60;changecom(`#')
+<td width="8%"> m4tt svg_gt</g> <td align="left"> changecom(,)&`#'62;changecom(`#')
+<td width="8%"> m4tt svg_leq</g> <td align="left"> changecom(,)&`#'8804;changecom(`#')
+<td width="8%"> m4tt svg_geq</g> <td align="left"> changecom(,)&`#'8805;changecom(`#')
+<td width="8%"> m4tt svg_prime</g> <td align="left"> changecom(,)&`#'8242;changecom(`#')
<tr>
-<td width="7%"> m4tt svg_prime</g>
- <td align="left"> changecom(,)&`#'8242;changecom(`#')
-<td width="7%"> m4tt svg_ensp</g>
- <td align="left"> |changecom(,)&`#'8194;changecom(`#')|
-<td width="7%"> m4tt svg_emsp</g>
- <td align="left"> |changecom(,)&`#'8195;changecom(`#')|
-<td width="7%"> m4tt svg_thinsp</g>
- <td align="left"> |changecom(,)&`#'8201;changecom(`#')|
-<td width="7%"> m4tt svg_backsl</g>
- <td align="left"> changecom(,)&`#'92;changecom(`#')
+<td width="8%"> m4tt svg_backsl</g> <td align="left"> changecom(,)&`#'92;changecom(`#')
+<td width="8%"> m4tt svg_pound</g> <td align="left"> changecom(,)&`#'35;changecom(`#')
+<td width="8%"> m4tt svg_comma</g> <td align="left"> changecom(,)&`#'44;changecom(`#')
+<td width="8%"> m4tt svg_lparen</g> <td align="left"> changecom(,)&`#'40;changecom(`#')
+<td width="8%"> m4tt svg_rparen</g> <td align="left"> changecom(,)&`#'41;changecom(`#')
+<td width="8%"> m4tt svg_emsp</g> <td align="left"> |changecom(,)&`#'8195;changecom(`#')|
+<td width="8%"> m4tt svg_ensp</g> <td align="left"> |changecom(,)&`#'8194;changecom(`#')|
+<td width="8%"> m4tt svg_thinsp</g> <td align="left"> |changecom(,)&`#'8201;changecom(`#')|
</table>
</ul>
@@ -277,6 +257,7 @@ cfig(JackSVG)
cfig(ConnSVG)
cfig(PconnSVG)
cfig(HeadersSVG)
+cfig(ConnectorsSVG)
cfig(fetSVG)
cfig(ujtSVG)
cfig(thyristorSVG)
@@ -285,7 +266,7 @@ cfig(TgateSVG)
cfig(NportSVG)
cfig(NLGSVG)
cfig(WindingsSVG)
-cfig(ex01.m4)
+cfig(ex01SVG)
cfig(TimerSVG)
cfig(OptoisoSVG)
cfig(MixerSVG)
@@ -328,6 +309,7 @@ cfig(CanLogicSVG)
cfig(AlogixSVG)
cfig(ABlogixSVG)
cfig(XORSVG)
+cfig(paletteSVG)
cfig(ex00SVG)
cfig(controlSVG)
cfig(GrayCodeSVG)
@@ -355,6 +337,11 @@ cfig(ex15SVG)
cfig(CountingSVG)
cfig(CrowSVG)
cfig(FlowSVG)
+ <!-- <p>
+ More flow-chart examples? Try
+ <a href="https://buraphakit.sourceforge.io/EFI/EFI_2019_S2_W13.shtml"
+ TARGET="_blank">here.</a>
+ </p> -->
cfig(BtreeSVG)
cfig(TtreeSVG)
cfig(InclepsSVG)
diff --git a/graphics/circuit_macros/examples/svg/graysurfSVG.m4 b/graphics/circuit_macros/examples/svg/graysurfSVG.m4
index 5427b62afc..13c91aabc0 100644
--- a/graphics/circuit_macros/examples/svg/graysurfSVG.m4
+++ b/graphics/circuit_macros/examples/svg/graysurfSVG.m4
@@ -1,7 +1,7 @@
.PS
# graysurfSVG.m4
threeD_init
-copy "HOMELIB_/dpictools.pic"
+NeedDpicTools
Overall: [
[]
diff --git a/graphics/circuit_macros/examples/svg/icsSVG.m4 b/graphics/circuit_macros/examples/svg/icsSVG.m4
index 9a1f40634a..0733bbef64 100644
--- a/graphics/circuit_macros/examples/svg/icsSVG.m4
+++ b/graphics/circuit_macros/examples/svg/icsSVG.m4
@@ -1,9 +1,10 @@
divert(-1)
- Macros defining some integrated circuits
+ Macros defining some integrated circuits and connectors
define(`lg_pinsep',3*L_unit) logic pin separation in logic units
define(`lg_chipwd',18*L_unit) default chip width
+define(`overbar_',`{ line right last "".wid with .c at last "".n+(0,1bp__) }')
`A sequence of pins along the east or west side of a chip:
lg_pinseq(initial pin no,final pin no,
@@ -15,19 +16,17 @@ define(`lg_pinseq',`for_($1,$2,1,
define(`ic6116',`[ Chip: box wid_ lg_chipwd ht_ 15*lg_pinsep
lg_pin(Chip.sw_+(0,lg_pinsep),GND,Pin12,w,12)
lg_pin(Chip.sw_+(0,2*lg_pinsep),,Pin18,wN,18)
- "svg_small(CS,75)" wid textht*1.5 at (Chip.w,last line) ljust
- { line right last "".wid from last "".nw+(1,0)*textoffset }
+ "svg_small(CS,75)" wid textht*1.5 at (Chip.w,last line) ljust; overbar_
lg_pinseq(0,2,w,4,9+,D)
lg_pinseq(3,7,w,4,10+,D)
lg_pin(Chip.sw_+(0,13*lg_pinsep),,Pin21,w,21)
"svg_small(R/W,75)" wid textht*2.0 at (Chip.w,last line) ljust
- { line right last "".wid/2 from last "".n+(2,0)*textoffset }
+ { line right last "".wid/2 from last "".n+(0,1bp__) }
lg_pin(Chip.sw_+(0,14*lg_pinsep),V`'svg_small(CC,75),Pin24,w,24)
lg_pin(Chip.se_+(0,lg_pinsep),,Pin20,eN,20)
- "svg_small(OE,75)" wid textht*1.5 at (Chip.e,last line) rjust
- { line left last "".wid from last "".ne+(-1,0)*textoffset }
+ "svg_small(OE,75)" wid textht*1.5 at (Chip.e,last line) rjust; overbar_
lg_pinseq(0,7,e,3,8-,A)
lg_pinseq(8,9,e,3,31-,A)
@@ -39,17 +38,15 @@ define(`ic6502',`[ Chip: box wid_ lg_chipwd ht_ 24*lg_pinsep
lg_pin(Chip.sw_+(0,2*lg_pinsep),V`'svg_small(SS,75),Pin1,w,1)
lg_pin(Chip.sw_+(0,4*lg_pinsep),,Pin34,w,34)
"svg_small(R/W,75)" wid textht*2.0 at (Chip.w,last line) ljust
- { line right last "".wid/2 from last "".n+(2,0)*textoffset }
+ { line right last "".wid/2 from last "".n+(0,1bp__) }
lg_pinseq(0,7,w,6,33-,D)
lg_pin(Chip.sw_+(0,15*lg_pinsep),,Pin40,wN,40)
- "svg_small(RESET,75)" wid textht*3.8 at (Chip.w,last line) ljust
- { line right last "".wid from last "".nw+(1,0)*textoffset }
+ "svg_small(RESET,75)" wid textht*3.8 at (Chip.w,last line) ljust; overbar_
lg_pin(Chip.sw_+(0,17*lg_pinsep),SYNC,Pin7,w,7)
lg_pin(Chip.sw_+(0,19*lg_pinsep),,Pin6,wN,6)
- "svg_small(NMI,75)" wid textht*2.1 at (Chip.w,last line) ljust
- { line right last "".wid from last "".nw+(1,0)*textoffset }
+ "svg_small(NMI,75)" wid textht*2.1 at (Chip.w,last line) ljust; overbar_
lg_pin(Chip.sw_+(0,21*lg_pinsep),RDY,Pin2,w,2)
lg_pin(Chip.sw_+(0,22*lg_pinsep),SO,Pin38,w,38)
@@ -59,8 +56,7 @@ define(`ic6502',`[ Chip: box wid_ lg_chipwd ht_ 24*lg_pinsep
lg_pinseq(0,11,e,6,9+,A)
lg_pinseq(12,15,e,6,10+,A)
lg_pin(Chip.se+(0,23*lg_pinsep),,Pin4,eN,4)
- "svg_small(IRQ,75)" wid textht*2.0 at (Chip.e,last line) rjust
- { line left last "".wid from last "".ne+(-1,0)*textoffset }
+ "svg_small(IRQ,75)" wid textht*2.0 at (Chip.e,last line) rjust; overbar_
`$1']')
define(`ic6522',`[ Chip: box wid_ lg_chipwd ht_ 24*lg_pinsep
@@ -68,8 +64,7 @@ define(`ic6522',`[ Chip: box wid_ lg_chipwd ht_ 24*lg_pinsep
lg_pin(Chip.sw_+(0,3*lg_pinsep),CS1,Pin24,w,24)
lg_pin(Chip.sw_+(0,4*lg_pinsep),CK,Pin25,w,25)
lg_pin(Chip.sw_+(0,5*lg_pinsep),,Pin23,wN,23)
- "svg_small(CS2,75)" wid textht*2.2 at (Chip.w,last line) ljust
- { line right last "".wid from last "".nw+(1,0)*textoffset }
+ "svg_small(CS2,75)" wid textht*2.2 at (Chip.w,last line) ljust; overbar_
lg_pin(Chip.sw_+(0,7*lg_pinsep),RS0(A0),Pin38,w,38)
lg_pin(Chip.sw_+(0,8*lg_pinsep),RS1(A1),Pin37,w,37)
@@ -78,11 +73,10 @@ define(`ic6522',`[ Chip: box wid_ lg_chipwd ht_ 24*lg_pinsep
lg_pinseq(0,7,w,12,33-,D)
lg_pin(Chip.sw_+(0,21*lg_pinsep),,Pin22,w,22)
"svg_small(R/W,75)" wid textht*2.0 at (Chip.w,last line) ljust
- { line right last "".wid/2 from last "".n+(2,0)*textoffset }
+ { line right last "".wid/2 from last "".n+(0,1bp__) }
lg_pin(Chip.sw_+(0,22*lg_pinsep),,Pin21,wN,21)
- "svg_small(IRQ,75)" wid textht*2.0 at (Chip.w,last line) ljust
- { line right last "".wid from last "".nw+(1,0)*textoffset }
+ "svg_small(IRQ,75)" wid textht*2.0 at (Chip.w,last line) ljust; overbar_
lg_pin(Chip.sw_+(0,23*lg_pinsep),V`'svg_small(CC,75),Pin20,w,20)
lg_pinseq(0,7,e,1,10+,PB)
@@ -90,20 +84,17 @@ define(`ic6522',`[ Chip: box wid_ lg_chipwd ht_ 24*lg_pinsep
lg_pinseq(0,7,e,12,2+,PA)
lg_pinseq(1,2,e,19,41-,CA)
lg_pin(Chip.se_+(0,23*lg_pinsep),,Pin34,eN,34)
- "svg_small(RESET,75)" wid textht*3.8 at (Chip.e,last line) rjust
- { line left last "".wid from last "".ne+(-1,0)*textoffset }
+ "svg_small(RESET,75)" wid textht*3.8 at (Chip.e,last line) rjust; overbar_
`$1']')
define(`ic74LS138',`[ Chip: box wid_ lg_chipwd ht_ 11*lg_pinsep
lg_pin(Chip.sw_+(0,lg_pinsep),GND,Pin8,w,8)
lg_pin(Chip.sw_+(0,2*lg_pinsep),,Pin4,wN,4)
- "svg_small(G2a,75)" wid textht*2.0 at (Chip.w,last line) ljust
- { line right last "".wid from last "".nw+(1,0)*textoffset }
+ "svg_small(G2a,75)" wid textht*2.0 at (Chip.w,last line) ljust; overbar_
lg_pin(Chip.sw_+(0,3*lg_pinsep),,Pin5,wN,5)
- "svg_small(G2b,75)" wid textht*2.0 at (Chip.w,last line) ljust
- { line right last "".wid from last "".nw+(1,0)*textoffset }
+ "svg_small(G2b,75)" wid textht*2.0 at (Chip.w,last line) ljust; overbar_
lg_pin(Chip.sw_+(0,5*lg_pinsep),A,Pin1,w,1)
lg_pin(Chip.sw_+(0,6*lg_pinsep),B,Pin2,w,2)
@@ -114,4 +105,154 @@ define(`ic74LS138',`[ Chip: box wid_ lg_chipwd ht_ 11*lg_pinsep
lg_pin(Chip.se_+(0,9*lg_pinsep),Y7,Pin7,eN,7)
`$1']')
+ `ArduinoUno( wid,ht,pinlen )'
+define(`ArduinoUno',`[
+ define(`m4bwid',`ifelse(`$1',,`24*L_unit',`$1')')dnl
+ define(`m4bht',`ifelse(`$2',,`20*lg_pinsep',`$2')')dnl
+#
+
+ Connector: box wid m4bwid ht m4bht
+#
+ plen = ifelse(`$4',,`2*L_unit',`$4')
+#
+Loopover_(`x',`ifelse(x,nul,,
+ `Pin`'eval(5+m4Lx): line left_ plen from Connector.nw-(0,(5+m4Lx)*lg_pinsep)
+ { "x" ljust at last line.start }')',
+ IOREF, RESET,`+`'3V3',`+`'5V', GND, GND, VIN,
+ nul, A0, A1, A2, A3, A4, A5)
+#
+Loopover_(`x',`ifelse(x,nul,,
+ `Pin`'eval(22-m4Lx): line right_ plen from Connector.ne-(0,m4Lx*lg_pinsep)
+ { "x" rjust at last line.start }')',
+ SCL, SDA, AREF, GND, D13, D12, ~D11, ~D10, ~D9, D8,
+ nul, D7, ~D6, ~D5, D4, ~D3, D2, TX D1, RX D0)
+#
+ `$4'] ')
+
+ `ArduinoLeonardo( wid,ht,pinlen )'
+define(`ArduinoLeonardo',`[
+ define(`m4bwid',`ifelse(`$1',,`24*L_unit',`$1')')dnl
+ define(`m4bht',`ifelse(`$2',,`20*lg_pinsep',`$2')')dnl
+#
+ Connector: box wid m4bwid ht m4bht
+#
+ plen = ifelse(`$4',,`2*L_unit',`$4')
+#
+Loopover_(`x',`ifelse(x,nul,,
+ `Pin`'eval(5+m4Lx): line left_ plen from Connector.nw-(0,(5+m4Lx)*lg_pinsep)
+ { "x" ljust at last line.start }')',
+ IOREF, RESET,`+`'3V3',`+`'5V', GND, GND, VIN,
+ nul, A0, A1, A2, A3, A4, A5)
+#
+Loopover_(`x',`ifelse(x,nul,,
+ `Pin`'eval(22-m4Lx): line right_ plen from Connector.ne-(0,m4Lx*lg_pinsep)
+ { "x" rjust at last line.start }')',
+ SCL, SDA, AREF, GND,
+ ~D13, D12, ~D11, ~D10, ~D9, D8,
+ nul, D7, ~D6, ~D5, D4, ~D3, D2, TX D1, RX D0)
+#
+ `$4'] ')
+
+ `RPi( wid,ht,pinlen )'
+define(`RPi',`[
+ define(`m4bwid',`ifelse(`$1',,`34*L_unit',`$1')')dnl
+ define(`m4bht',`ifelse(`$2',,`21*lg_pinsep',`$2')')dnl
+#
+ GPIO: box wid m4bwid ht m4bht
+ plen = ifelse(`$4',,`6*L_unit',`$4')
+#
+define A_LeftGPIO {
+ exec sprintf("Pin%g: line left_ plen from GPIO.nw-(0,%g)",\
+ 2*(`$'1)-1,(`$'1)*lg_pinsep)
+ { "`$'3" ljust at last line.start }
+ "`$'2" at last line.c above }
+#
+Loopover_(`x',`ifelse(x,nul,,`A_LeftGPIO(m4Lx,patsubst(x,;,`,'))')',
+ ;3V3,
+ 2;SDA1, 3;SCL1, 4;GPIO_GCLK,
+ ;GND,
+ 17;GPIO_GEN0, 27;GPIO_GEN2, 22;GPIO_GEN3,
+ ;3V3,
+ 10;SPI_MOSI, 9;SPI_MISO, 11;SPI_SCLK,
+ ;GND,
+ ;ID_SD,
+ 5;, 6;, 13;, 19;, 26;,
+ ;GND )
+#
+define A_RightGPIO {
+ exec sprintf("Pin%g: line right_ plen from GPIO.ne-(0,%g)",\
+ 2*(`$'1),(`$'1)*lg_pinsep)
+ { "`$'3" rjust at last line.start }
+ "`$'2" at last line.c above }
+#
+Loopover_(`x',`ifelse(x,nul,,`A_RightGPIO(m4Lx,patsubst(x,;,`,'))')',
+ ;5V,
+ ;5V,
+ ;GND,
+ 14;TXD0, 15;RXD0, 18;GPIO_GEN1,
+ ;GND,
+ 23;GPIO_GEN4, 24;GPIO_GEN5,
+ ;GND,
+ 25;GPIO_GEN6, 8;SPI_CEO_N, 7;SPI_CE1_N,
+ ;ID_SC,
+ ;GND,
+ 12;,
+ ;GND,
+ 16;, 20;, 21; )
+#
+ `$4'] ')
+
+ `USB_C_Socket( wid, ht, pinlen )'
+define(`USB_C_Socket',`[
+ define(`m4bwid',`ifelse(`$1',,`18*L_unit',`$1')')dnl
+ define(`m4bht',`ifelse(`$2',,`14*lg_pinsep',`$2')')dnl
+#
+ Base: box wid m4bwid ht m4bht rad 5/3*lg_pinsep
+ plen = ifelse(`$4',,`6*L_unit',`$4')
+#
+ Loopover_(`x',
+ `B`'eval(13-m4Lx): dnl
+ line left_ plen from Base.n-(m4bwid/2,(m4Lx+0.5)*lg_pinsep)
+ {"x" ljust at last line.start}',
+ GND, RX1+, RX1-, VBUS, SBU2, D-, D+, CC2, VBUS, TX2-, TX2+, GND)
+#
+ Loopover_(`x',
+ `A`'m4Lx: line right_ plen from Base.n+(m4bwid/2,-(m4Lx+0.5)*lg_pinsep)
+ {"x" rjust at last line.start}',
+ GND, TX1+, TX1-, VBUS, CC1, D+, D-, SBU1, VBUS, RX2-, RX2+, GND)
+#
+ `$4']')
+
+ `HDMI_micro( wid, ht, pinlen )'
+define(`HDMI_micro',`[
+ define(`m4bwid',`ifelse(`$1',,`16*L_unit',`$1')')dnl
+ define(`m4bht',`ifelse(`$2',,`19*lg_pinsep+m4bwid*2/3',`$2')')dnl
+#
+ Base:[line up m4bht/2 then right m4bwid*2/3 \
+ then right m4bwid/3 down m4bwid/3 \
+ then down m4bht-2*m4bwid/3 then down m4bwid/3 left m4bwid/3 \
+ then left m4bwid*2/3 then to Here]
+ plen = ifelse(`$4',,`6*L_unit',`$4')
+#
+ Loopover_(`x',
+ `Pin`'m4Lx: line left_ plen from Base.nw-(0,m4bwid/3+(m4Lx-1/2)*lg_pinsep)
+ {"x" ljust at last line.start}
+ "m4Lx" at last line.c above',
+ HPD, UTILITY, D2+, D2_SH, D2-, D1+, D1_SH, D1-, D0+, D0_SH,
+ D0-, CLK+, CLK_SH, CLK-, CEC, GND, SCL, SDA, +5V)
+ line from Base.nw+(m4bwid*2/3-lg_pinsep,0) up plen
+ svg_rot(90,"21" at last line.c +(-2bp__,0))
+ svg_rot(90,sprintf("SH2") at last line.start + (4bp__,-8bp__))
+ line from Base.nw+(m4bwid*2/3-2*lg_pinsep,0) up plen
+ svg_rot(90,"20" at last line.c+(-2bp__,0))
+ svg_rot(90,"SH1" at last line.start + (4bp__,-8bp__))
+ line from Base.sw+(m4bwid*2/3-lg_pinsep,0) down plen
+ svg_rot(90,"23" at last line.c+(-2bp__,0))
+ svg_rot(90,"SH4" at last line.start + (4bp__,14bp__))
+ line from Base.sw+(m4bwid*2/3-2*lg_pinsep,0) down plen
+ svg_rot(90,"22" at last line.c+(-2bp__,0))
+ svg_rot(90,"SH3" at last line.start + (4bp__,14bp__))
+#
+ `$4']')
+
divert(0)dnl
diff --git a/graphics/circuit_macros/examples/svg/lcctSVG.m4 b/graphics/circuit_macros/examples/svg/lcctSVG.m4
index 9994b32309..ba25e60172 100644
--- a/graphics/circuit_macros/examples/svg/lcctSVG.m4
+++ b/graphics/circuit_macros/examples/svg/lcctSVG.m4
@@ -1,7 +1,7 @@
.PS
# lcctSVG.m4
maxpswid = 10
-log_init(svg_font(sans-serif,11bp__,1bp__))
+log_init(svg_font(sans-serif,11bp__,2bp__))
include(icsSVG.m4)
textht = textht * 0.9
diff --git a/graphics/circuit_macros/examples/svg/paletteSVG.m4 b/graphics/circuit_macros/examples/svg/paletteSVG.m4
index 2a26afdb99..2bad59ba93 100644
--- a/graphics/circuit_macros/examples/svg/paletteSVG.m4
+++ b/graphics/circuit_macros/examples/svg/paletteSVG.m4
@@ -333,7 +333,7 @@ A:Gridbox( FlipFlop(D)
] with .nw at (0,0)
-"A draft palette of elements for Inkscape using a 1 mm grid" \
+"A draft palette of a few elements for Inkscape using a 1 mm grid" \
ljust below at last [].sw
command "</g>" # end font
diff --git a/graphics/circuit_macros/examples/svg/recycleSVG.m4 b/graphics/circuit_macros/examples/svg/recycleSVG.m4
index d6246cc9ab..135f31414e 100644
--- a/graphics/circuit_macros/examples/svg/recycleSVG.m4
+++ b/graphics/circuit_macros/examples/svg/recycleSVG.m4
@@ -1,7 +1,7 @@
.PS
# recycle.m4
gen_init
-copy "HOMELIB_`'dpictools.pic"
+NeedDpicTools
[
# Gradient fill and clipping are simply
# done with PStricks or Tikz but the other
diff --git a/graphics/circuit_macros/examples/svg/tstSVG.htmx b/graphics/circuit_macros/examples/svg/tstSVG.htmx
index f15d09b7c7..6bb5ab2029 100644
--- a/graphics/circuit_macros/examples/svg/tstSVG.htmx
+++ b/graphics/circuit_macros/examples/svg/tstSVG.htmx
@@ -60,16 +60,28 @@ more basic.
<ul>
<ul>
<li>
- m4tt`'svg_font(</g>font-face,height,textoffset,dpic commands`'m4tt)</g>:
- Change font face, size, and dpic textoffset parameter.
+ m4tt`'svg_font(</g>font-face,nominal size[:dptextratio],textoffset,
+ dpic commands`'m4tt)</g>:
+ Change font face and dpic m4tt`'textht</g>, m4tt`'dptextratio</g>,
+ and m4tt`'textoffset</g> parameters.
If arg4 is blank, the font is changed and
requires m4tt`'command "&lt;/g&gt;"</g> to cancel the font change.
+ <br>
+ Note:
+ Nominal height = text height in drawing units; actual height =
+ nominal ht x m4tt`'dptextratio</g>.
+ <br>
Examples: <br>
m4tt`'svg_font(Times)</g><br>
+ m4tt`'svg_font(Times,14bp__)</g><br>
+ m4tt`'svg_font(sans-serif,14bp__:0.71)</g><br>
m4tt`'svg_font(Times,11bp__,1bp__,"text" at A)</g><br>
m4tt`'svg_font(font-family="Times")</g><br>
m4tt`'svg_font(font-family="Times" font-style="italic")</g><br>
m4tt`'svg_font(style="font-family:Times; font-style:italic")</g>
+ <li>m4tt svgfontratio(</g>font name`'m4tt)</g>;
+ Reasonable m4tt`'dptextratio</g> value for common fonts, used
+ by m4tt`'svg_font</g>.
<li>m4tt svg_tspan(</g>text attributes, text`'m4tt)</g>;
e.g. m4tt`'svg_tspan(font-style="italic" font-size="75%",XYZ)</g>
<li>m4tt svg_it(</g>text`'m4tt)</g>: for italics
@@ -84,6 +96,13 @@ more basic.
subscript
<li>m4tt svg_sup(</g>text, size percent, y displ, x displ`'m4tt)</g>:
superscript
+ <li>m4tt svg_rot(</g>degrees, "text" [at position]`'m4tt)</g>:
+ Rotate text degrees (default 90) ccw.
+ Requires m4tt`'svg_rot_init(</g>filename`'m4tt)</g> and the source
+ must be processed twice.
+ <li>m4tt svg_rot_init(</g>filename`'m4tt)</g>:
+ filename is the basename of the output of
+ m4tt`'dpic -v filename.pic > filename.svg`'m4tt
<li>m4tt svg_symbol(</g>text`'m4tt)</g>: allow quoted pound sign in text,
e.g., m4tt`'svg_symbol(10&&#96;&#35;&#39;176;)</g> produces 10&#176;
<li>m4tt svgLink(</g>URL, drawing object, m4tt[B])</g>:
@@ -96,102 +115,61 @@ more basic.
<table cellpadding="0" cellspacing="0" width="100%" >
<tr>
-<td width="7%"> m4tt svg_alpha</g>
- <td align="left"> changecom(,)&`#'945;changecom(`#')
-<td width="7%"> m4tt svg_beta</g>
- <td align="left"> changecom(,)&`#'946;changecom(`#')
-<td width="7%"> m4tt svg_chi</g>
- <td align="left"> changecom(,)&`#'967;changecom(`#')
-<td width="7%"> m4tt svg_comma</g>
- <td align="left"> changecom(,)&`#'44;changecom(`#')
-<td width="7%"> m4tt svg_Delta</g>
- <td align="left"> changecom(,)&`#'916;changecom(`#')
-<td width="7%"> m4tt svg_delta</g>
- <td align="left"> changecom(,)&`#'948;changecom(`#')
-<td width="7%"> m4tt svg_epsilon</g>
- <td align="left"> changecom(,)&`#'949;changecom(`#')
-<td width="7%"> m4tt svg_eta</g>
- <td align="left"> changecom(,)&`#'951;changecom(`#')
+<td width="8%"> m4tt svg_alpha</g> <td align="left"> changecom(,)&`#'945;changecom(`#')
+<td width="8%"> m4tt svg_beta</g> <td align="left"> changecom(,)&`#'946;changecom(`#')
+<td width="8%"> m4tt svg_Gamma</g> <td align="left"> changecom(,)&`#'915;changecom(`#')
+<td width="8%"> m4tt svg_gamma</g> <td align="left"> changecom(,)&`#'947;changecom(`#')
+<td width="8%"> m4tt svg_Delta</g> <td align="left"> changecom(,)&`#'916;changecom(`#')
+<td width="8%"> m4tt svg_delta</g> <td align="left"> changecom(,)&`#'948;changecom(`#')
+<td width="10%"> m4tt svg_epsilon</g> <td align="left"> changecom(,)&`#'949;changecom(`#')
+<td width="8%"> m4tt svg_zeta</g> <td align="left"> changecom(,)&`#'950;changecom(`#')
<tr>
-<td width="7%"> m4tt svg_Gamma</g>
- <td align="left"> changecom(,)&`#'915;changecom(`#')
-<td width="7%"> m4tt svg_gamma</g>
- <td align="left"> changecom(,)&`#'947;changecom(`#')
-<td width="7%"> m4tt svg_iota</g>
- <td align="left"> changecom(,)&`#'953;changecom(`#')
-<td width="7%"> m4tt svg_kappa</g>
- <td align="left"> changecom(,)&`#'954;changecom(`#')
-<td width="7%"> m4tt svg_Lambda</g>
- <td align="left"> changecom(,)&`#'923;changecom(`#')
-<td width="7%"> m4tt svg_lambda</g>
- <td align="left"> changecom(,)&`#'955;changecom(`#')
-<td width="7%"> m4tt svg_micro</g>
- <td align="left"> changecom(,)&`#'956;changecom(`#')
-<td width="7%"> m4tt svg_mu</g>
- <td align="left"> changecom(,)&`#'956;changecom(`#')
+<td width="8%"> m4tt svg_eta</g> <td align="left"> changecom(,)&`#'951;changecom(`#')
+<td width="8%"> m4tt svg_Theta</g> <td align="left"> changecom(,)&`#'920;changecom(`#')
+<td width="8%"> m4tt svg_theta</g> <td align="left"> changecom(,)&`#'952;changecom(`#')
+<td width="8%"> m4tt svg_iota</g> <td align="left"> changecom(,)&`#'953;changecom(`#')
+<td width="8%"> m4tt svg_kappa</g> <td align="left"> changecom(,)&`#'954;changecom(`#')
+<td width="8%"> m4tt svg_Lambda</g> <td align="left"> changecom(,)&`#'923;changecom(`#')
+<td width="8%"> m4tt svg_lambda</g> <td align="left"> changecom(,)&`#'955;changecom(`#')
+<td width="8%"> m4tt svg_mu</g> <td align="left"> changecom(,)&`#'956;changecom(`#')
<tr>
-<td width="7%"> m4tt svg_nu</g>
- <td align="left"> changecom(,)&`#'957;changecom(`#')
-<td width="7%"> m4tt svg_ohm</g>
- <td align="left"> changecom(,)&`#'937;changecom(`#')
-<td width="7%"> m4tt svg_Omega</g>
- <td align="left"> changecom(,)&`#'937;changecom(`#')
-<td width="7%"> m4tt svg_omega</g>
- <td align="left"> changecom(,)&`#'969;changecom(`#')
-<td width="7%"> m4tt svg_Phi</g>
- <td align="left"> changecom(,)&`#'934;changecom(`#')
-<td width="7%"> m4tt svg_phi</g>
- <td align="left"> changecom(,)&`#'966;changecom(`#')
-<td width="7%"> m4tt svg_Pi</g>
- <td align="left"> changecom(,)&`#'928;changecom(`#')
-<td width="7%"> m4tt svg_pi</g>
- <td align="left"> changecom(,)&`#'960;changecom(`#')
+<td width="8%"> m4tt svg_nu</g> <td align="left"> changecom(,)&`#'957;changecom(`#')
+<td width="8%"> m4tt svg_Xi</g> <td align="left"> changecom(,)&`#'926;changecom(`#')
+<td width="8%"> m4tt svg_xi</g> <td align="left"> changecom(,)&`#'958;changecom(`#')
+<td width="8%"> m4tt svg_Pi</g> <td align="left"> changecom(,)&`#'928;changecom(`#')
+<td width="8%"> m4tt svg_pi</g> <td align="left"> changecom(,)&`#'960;changecom(`#')
+<td width="8%"> m4tt svg_rho</g> <td align="left"> changecom(,)&`#'961;changecom(`#')
+<td width="8%"> m4tt svg_Sigma</g> <td align="left"> changecom(,)&`#'931;changecom(`#')
+<td width="8%"> m4tt svg_sigma</g> <td align="left"> changecom(,)&`#'963;changecom(`#')
<tr>
-<td width="7%"> m4tt svg_Psi</g>
- <td align="left"> changecom(,)&`#'936;changecom(`#')
-<td width="7%"> m4tt svg_psi</g>
- <td align="left"> changecom(,)&`#'968;changecom(`#')
-<td width="7%"> m4tt svg_rho</g>
- <td align="left"> changecom(,)&`#'961;changecom(`#')
-<td width="7%"> m4tt svg_Sigma</g>
- <td align="left"> changecom(,)&`#'931;changecom(`#')
-<td width="7%"> m4tt svg_sigma</g>
- <td align="left"> changecom(,)&`#'963;changecom(`#')
-<td width="7%"> m4tt svg_tau</g>
- <td align="left"> changecom(,)&`#'964;changecom(`#')
-<td width="7%"> m4tt svg_Theta</g>
- <td align="left"> changecom(,)&`#'920;changecom(`#')
-<td width="7%"> m4tt svg_theta</g>
- <td align="left"> changecom(,)&`#'952;changecom(`#')
+<td width="8%"> m4tt svg_tau</g> <td align="left"> changecom(,)&`#'964;changecom(`#')
+<td width="10%"> m4tt svg_upsilon</g> <td align="left"> changecom(,)&`#'965;changecom(`#')
+<td width="8%"> m4tt svg_Phi</g> <td align="left"> changecom(,)&`#'934;changecom(`#')
+<td width="8%"> m4tt svg_phi</g> <td align="left"> changecom(,)&`#'966;changecom(`#')
+<td width="8%"> m4tt svg_chi</g> <td align="left"> changecom(,)&`#'967;changecom(`#')
+<td width="8%"> m4tt svg_Psi</g> <td align="left"> changecom(,)&`#'936;changecom(`#')
+<td width="8%"> m4tt svg_psi</g> <td align="left"> changecom(,)&`#'968;changecom(`#')
+<td width="8%"> m4tt svg_Omega</g> <td align="left"> changecom(,)&`#'937;changecom(`#')
<tr>
-<td width="7%"> m4tt svg_upsilon</g>
- <td align="left"> changecom(,)&`#'965;changecom(`#')
-<td width="7%"> m4tt svg_Xi</g>
- <td align="left"> changecom(,)&`#'926;changecom(`#')
-<td width="7%"> m4tt svg_xi</g>
- <td align="left"> changecom(,)&`#'958;changecom(`#')
-<td width="7%"> m4tt svg_zeta</g>
- <td align="left"> changecom(,)&`#'950;changecom(`#')
-<td width="7%"> m4tt svg_lt</g>
- <td align="left"> changecom(,)&`#'60;changecom(`#')
-<td width="7%"> m4tt svg_gt</g>
- <td align="left"> changecom(,)&`#'62;changecom(`#')
-<td width="7%"> m4tt svg_leq</g>
- <td align="left"> changecom(,)&`#'8804;changecom(`#')
-<td width="7%"> m4tt svg_geq</g>
- <td align="left"> changecom(,)&`#'8805;changecom(`#')
+<td width="8%"> m4tt svg_omega</g> <td align="left"> changecom(,)&`#'969;changecom(`#')
+<td width="8%"> m4tt svg_micro</g> <td align="left"> changecom(,)&`#'956;changecom(`#')
+<td width="8%"> m4tt svg_ohm</g> <td align="left"> changecom(,)&`#'937;changecom(`#')
+<td width="8%"> m4tt svg_lt</g> <td align="left"> changecom(,)&`#'60;changecom(`#')
+<td width="8%"> m4tt svg_gt</g> <td align="left"> changecom(,)&`#'62;changecom(`#')
+<td width="8%"> m4tt svg_leq</g> <td align="left"> changecom(,)&`#'8804;changecom(`#')
+<td width="8%"> m4tt svg_geq</g> <td align="left"> changecom(,)&`#'8805;changecom(`#')
+<td width="8%"> m4tt svg_prime</g> <td align="left"> changecom(,)&`#'8242;changecom(`#')
<tr>
-<td width="7%"> m4tt svg_prime</g>
- <td align="left"> changecom(,)&`#'8242;changecom(`#')
-<td width="7%"> m4tt svg_ensp</g>
- <td align="left"> |changecom(,)&`#'8194;changecom(`#')|
-<td width="7%"> m4tt svg_emsp</g>
- <td align="left"> |changecom(,)&`#'8195;changecom(`#')|
-<td width="7%"> m4tt svg_thinsp</g>
- <td align="left"> |changecom(,)&`#'8201;changecom(`#')|
-<td width="7%"> m4tt svg_backsl</g>
- <td align="left"> changecom(,)&`#'92;changecom(`#')
+<td width="8%"> m4tt svg_backsl</g> <td align="left"> changecom(,)&`#'92;changecom(`#')
+<td width="8%"> m4tt svg_pound</g> <td align="left"> changecom(,)&`#'35;changecom(`#')
+<td width="8%"> m4tt svg_comma</g> <td align="left"> changecom(,)&`#'44;changecom(`#')
+<td width="8%"> m4tt svg_lparen</g> <td align="left"> changecom(,)&`#'40;changecom(`#')
+<td width="8%"> m4tt svg_rparen</g> <td align="left"> changecom(,)&`#'41;changecom(`#')
+<td width="8%"> m4tt svg_emsp</g> <td align="left"> |changecom(,)&`#'8195;changecom(`#')|
+<td width="8%"> m4tt svg_ensp</g> <td align="left"> |changecom(,)&`#'8194;changecom(`#')|
+<td width="8%"> m4tt svg_thinsp</g> <td align="left"> |changecom(,)&`#'8201;changecom(`#')|
</table>
+
</ul>
<li> Inkscape: It may be efficient to define elements by macro and to
place them using a WYSIWYG graphics editor. A draft page intended
diff --git a/graphics/circuit_macros/examples/svg/windows.m4 b/graphics/circuit_macros/examples/svg/windows.m4
new file mode 100644
index 0000000000..bc4527f36e
--- /dev/null
+++ b/graphics/circuit_macros/examples/svg/windows.m4
@@ -0,0 +1,12 @@
+divert(-1)
+# windows.m4
+# This file is used if the CUSTOM=windows.m4 function is turned on in Makefile
+define(`windows_')
+
+# To makd NeedDpicTools work,
+# change the absolute Windows path to your installation directory:
+
+define(`NeedDpicTools',`if "dpictools" != "1" then {
+ copy "D:\Dwight\lib\dpictools.pic" } define(`dfitcurve__') ')
+
+divert(0)dnl
diff --git a/graphics/circuit_macros/examples/windows.m4 b/graphics/circuit_macros/examples/windows.m4
index 1b2a904af0..bc4527f36e 100644
--- a/graphics/circuit_macros/examples/windows.m4
+++ b/graphics/circuit_macros/examples/windows.m4
@@ -1,7 +1,10 @@
divert(-1)
-# This file is used if the CUSTOM= function is turned on in Makefile
+# windows.m4
+# This file is used if the CUSTOM=windows.m4 function is turned on in Makefile
+define(`windows_')
-# Change the absolute Windows path to your installation directory:
+# To makd NeedDpicTools work,
+# change the absolute Windows path to your installation directory:
define(`NeedDpicTools',`if "dpictools" != "1" then {
copy "D:\Dwight\lib\dpictools.pic" } define(`dfitcurve__') ')
diff --git a/graphics/circuit_macros/examples/xfig/xfiglib.fig b/graphics/circuit_macros/examples/xfig/xfiglib.fig
index 386844bc5c..6b3d4fb3e4 100644
--- a/graphics/circuit_macros/examples/xfig/xfiglib.fig
+++ b/graphics/circuit_macros/examples/xfig/xfiglib.fig
@@ -6,7 +6,7 @@ Letter
100.00
Single
-2
-# dpic version 2020.03.01 option -x for Fig 3.2
+# dpic version 2020.06.01 option -x for Fig 3.2
1200 2
6 0 0 3975 5025
6 0 0 3975 5025
@@ -184,8 +184,10 @@ Single
2 1 0 1 0 -1 0 -1 -1 0 0 0 0 0 0 2
1125 1425 1125 1275
1 3 0 1 0 -1 0 -1 -1 0 1 0.0 1125 1125 150 150 1275 1125 1275 1125
-5 1 0 1 0 -1 0 -1 -1 0 0 0 0 0 1075 1125 1025 1125 1075 1075 1125 1125
+6 1025 1075 1225 1175
+5 1 0 1 0 -1 0 -1 -1 0 0 1 0 0 1075 1125 1125 1125 1075 1075 1025 1125
5 1 0 1 0 -1 0 -1 -1 0 0 1 0 0 1175 1125 1125 1125 1175 1175 1225 1125
+-6
2 1 0 1 0 -1 0 -1 -1 0 0 0 0 0 0 2
1125 975 1125 825
-6
diff --git a/graphics/circuit_macros/gpic.m4 b/graphics/circuit_macros/gpic.m4
index 9a5c596dce..16d58c7a15 100644
--- a/graphics/circuit_macros/gpic.m4
+++ b/graphics/circuit_macros/gpic.m4
@@ -1,7 +1,7 @@
divert(-1)
gpic.m4 Initialization for gpic.
-* Circuit_macros Version 9.2, copyright (c) 2020 J. D. Aplevich under *
+* Circuit_macros Version 9.3, copyright (c) 2020 J. D. Aplevich under *
* the LaTeX Project Public Licence in file Licence.txt. The files of *
* this distribution may be redistributed or modified provided that this *
* copyright notice is included and provided that modifications are clearly *
diff --git a/graphics/circuit_macros/lib3D.m4 b/graphics/circuit_macros/lib3D.m4
index 53d2004b43..e469841036 100644
--- a/graphics/circuit_macros/lib3D.m4
+++ b/graphics/circuit_macros/lib3D.m4
@@ -3,7 +3,7 @@ lib3D.m4 Macros for rotation, projection, and other
operations on argument triples representing
3D vectors.
-* Circuit_macros Version 9.2, copyright (c) 2020 J. D. Aplevich under *
+* Circuit_macros Version 9.3, copyright (c) 2020 J. D. Aplevich under *
* the LaTeX Project Public Licence in file Licence.txt. The files of *
* this distribution may be redistributed or modified provided that this *
* copyright notice is included and provided that modifications are clearly *
diff --git a/graphics/circuit_macros/libcct.m4 b/graphics/circuit_macros/libcct.m4
index b213af9e91..0ae189ad17 100644
--- a/graphics/circuit_macros/libcct.m4
+++ b/graphics/circuit_macros/libcct.m4
@@ -1,7 +1,7 @@
divert(-1)
libcct.m4
-* Circuit_macros Version 9.2, copyright (c) 2020 J. D. Aplevich under *
+* Circuit_macros Version 9.3, copyright (c) 2020 J. D. Aplevich under *
* the LaTeX Project Public Licence in file Licence.txt. The files of *
* this distribution may be redistributed or modified provided that this *
* copyright notice is included and provided that modifications are clearly *
@@ -551,15 +551,15 @@ define(`xtal',`eleminit_(`$1')
`source( linespec,
V|v|I|i|AC|B|F|G|H|Q|L|N|P|R|S[C[r]|E[r]]]|T|X|U|other,
diameter, R, fill)
- V = voltage source; v=alternate voltage source;
+ V = voltage source; v = alternate voltage source;
I = current source; i = alternate current source;
- AC = AC source, B = bulb, F = fluorescent, G = generator,
- Q = charge, L = lamp, N = neon, P = pulse, R = ramp,
- SC = quarter arc, SE = arc; r = right orientation,
- S = sinusoid,
- T = triangle, X = interior X, U = square-wave,
- other = custom interior label or waveform,
- R = reversed polarity
+ 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'
define(`source',`ifelse(`$4',R,
`reversed(`source',`$1',`$2',`$3',,shift(shift(shift(shift($@)))))',
@@ -621,10 +621,7 @@ define(`source',`ifelse(`$4',R,
at rvec_( m4h/2,0) ifsvg(+(0,textht/10))}',
`$2',v,`{line from rvec_(-m4h,0) \
to rvec_(m4h,0)}',
- `$2',AC,`{
- arc rad m4h/3 cw from Here-(m4h*2/3,0) \
- to Here with .c at Here-(m4h/3,0)
- arc rad m4h/3 ccw from Here to Here+(m4h*2/3,0) with .c at Here+(m4h/3,0)}',
+ `$2',AC,`{ACsymbol(,,,AR)}',
`$2',P,`{ line from Here+(-m4h/2,-m4h/4) \
to Here+(-m4h/4,-m4h/4) \
then to Here+(-m4h/4,m4h/4) \
@@ -652,13 +649,7 @@ define(`source',`ifelse(`$4',R,
`$2',SE,`{ arc from Cintersect(Here,m4h,rvec_(0,2*m4h),1.8*m4h) \
to Cintersect(Here,m4h,rvec_(0,2*m4h),1.8*m4h,R) \
with .c at rvec_(0,2*m4h) }',
- `$2',S,`{ ifgpic(
- `arc rad m4h/3 cw from Here-(m4h*2/3,0) \
- to Here with .c at Here-(m4h/3,0)
- arc rad m4h/3 ccw from Here to Here+(m4h*2/3,0) with .c at Here+(m4h/3,0)',
- `savem4dir(`m4srcstack') right_
- sinusoid(m4h/2,twopi_/(m4h),pi_/2,-m4h/2,m4h/2) with .Origin at Here
- restorem4dir(`m4srcstack') ') }',
+ `$2',S,`{ACsymbol(,,,R)}',
`$2',T,`{ line from Here+(-m4h*3/4,-m4h/4) \
to Here+(-m4h/4,m4h/4) \
then to Here+(m4h/4,-m4h/4) \
@@ -706,34 +697,75 @@ define(`ttmotor',`eleminit_(`$1')
{ [box invis ht_ m4r*2 wid_ (m4r+m4w)*2] at last circle.c }
line to rvec_(rp_len,0) invis ')
- `Controlled source
- consource( linespec ,V|I|v|i, R )
+ `consource( linespec ,V|I|v|i|P, R )
+ Controlled source
+ Arg3:
+ V= voltage
+ I= current
+ v= voltage type 2
+ i= current type 2
+ P= proximity sensor
arg 4 can be used to modify the body with e.g.
color or fill'
define(`consource',`ifelse(`$3',R,
`reversed(`consource',`$1',`$2',,shift(shift(shift($@))))',
`eleminit_(`$1')
{line to rvec_(rp_len/2-csdim_,0)
- {line to rvec_(csdim_,csdim_) \
- then to rvec_(2*csdim_,0)\
- then to rvec_(csdim_,-csdim_) \
- then to Here `$4' }
+ M4CSN: rvec_(csdim_,csdim_)
+ M4CSS: rvec_(csdim_,-csdim_)
+ M4CSE: rvec_(2*csdim_,0)
+ M4CSW: Here
+ {line to M4CSN then to M4CSE then to M4CSS then to Here `$4'}
ifelse(`$2',I,
`{arrow from rvec_(csdim_/4,0) \
to rvec_(csdim_*7/4,0)}',
`$2',i,
- `{line from rvec_(csdim_,csdim_) \
- to rvec_(csdim_,-csdim_)}',
+ `{line from M4CSN to M4CSS}',
`$2',V,
- `{"ifsvg(-,`$-$')" at rvec_(csdim_*0.5,0) ifsvg(+(0,textht/10))}
- {"ifsvg(+,`$+$')" at rvec_(csdim_*1.5,0) ifsvg(+(0,textht/10))}',
+ `{"iflatex(`$-$',-)" at rvec_(csdim_*0.5,0) ifsvg(+(0,textht/10))}
+ {"iflatex(`$+$',+)" at rvec_(csdim_*1.5,0) ifsvg(+(0,textht/10))}',
`$2',v,
- `{line to rvec_(2*csdim_,0)} ')
- line from rvec_(2*csdim_,0) \
- to rvec_(rp_len/2+csdim_,0) }
+ `{line to M4CSE} ',
+ `$2',P,
+ `{ Proxim(2*csdim_) at rvec_(csdim_,0) }')
+ line from M4CSE to rvec_(rp_len/2+csdim_,0) }
{[box invis ht_ 2*csdim_ wid_ 2*csdim_] at rvec_(rp_len/2,0)}
line to rvec_(rp_len,0) invis ')')
+ `Proxim(size, U|D|L|R|degrees)
+ Proximity symbol
+ Arg2 default: current direction'
+define(`Proxim',`[
+ define(`m4prwid',`ifelse(`$1',,(dimen_/2),`($1)')')dnl
+ setdir_(ifelse(`$2',,`ifdef(`m4a_',rp_ang*rtod_,0)',`$2'))
+ M4PRN: rvec_(0, m4prwid/2)
+ M4PRE: rvec_(m4prwid/2,0)
+ M4PRS: rvec_(0,-m4prwid/2)
+ M4PRW: rvec_(-m4prwid/2,0)
+ { line from 1/2 between M4PRN and M4PRE to M4PRE then to M4PRS \
+ then to M4PRW then to M4PRN then to 1/2 between M4PRN and M4PRE }
+ { line from 1/4 between M4PRW and M4PRN to 1/4 between M4PRE and M4PRN }
+ { line from 1/4 between M4PRW and M4PRS to 1/4 between M4PRE and M4PRS }
+ `$3'; resetdir_ ]')
+
+ `Magn(len, ht, U|D|L|R|degrees)
+ Magnetic relay action symbol'
+define(`Magn',`[
+ define(`m4mawi2',`ifelse(`$1',,(dimen_/4),`(($1)/2)')')dnl
+ define(`m4mah2',`ifelse(`$2',,(dimen_/8),`(($2)/2)')')dnl
+ setdir_(ifelse(`$3',,`ifdef(`m4a_',rp_ang*rtod_,0)',`$3'))
+ m4fshade(0, line from vec_( 0, m4mah2) \
+ to vec_( m4mawi2, m4mah2) \
+ then to vec_( m4mawi2,-m4mah2) \
+ then to vec_( m4mawi2/2,-m4mah2) \
+ then to vec_( m4mawi2/2,0) \
+ then to vec_(-m4mawi2/2,0) \
+ then to vec_(-m4mawi2/2,-m4mah2) \
+ then to vec_(-m4mawi2,-m4mah2) \
+ then to vec_(-m4mawi2, m4mah2) \
+ then to vec_( 0, m4mah2))
+ `$4'; resetdir_ ]')
+
`battery( linespec, n, R )
Arg 3: reversed polarity'
define(`battery',`ifelse(`$3',R,
@@ -765,7 +797,7 @@ define(`ebox',`eleminit_(`$1')
line to rvec_(rp_len,0) invis ')
`fuse( linespec, chars, wid, ht )
- chars A|B|C|D|S|HB|HC or dA (=D)'
+ chars dA|B|C|D|S|SB|HB|HC or dA (=D)'
define(`fuse',`eleminit_(`$1')
define(`m4fusetype',`ifelse(`$2',,A,`$2',D,dA,`$2')')dnl
define(`m4ht',ifelse(`$4',,`dimen_/5'ifinstr(`$2',H,*5/3),`($4)'))dnl
@@ -775,7 +807,7 @@ define(`fuse',`eleminit_(`$1')
sc_draw(`m4fusetype',HB,
`{move to rvec_(m4d,0); lbox(m4wd-2*m4d,m4ht-2*m4d)}
{lbox(m4wd,m4ht)}
- line to rvec_(m4wd+max(0,rp_len/2-m4wd/2),0)}')
+ line to rvec_(m4wd+max(0,rp_len/2-m4wd/2),0)')
sc_draw(`m4fusetype',HC,
`{move to rvec_(m4d,0); {lbox(m4wd-2*m4d,m4ht-2*m4d)}
{line from rvec_((m4wd-2*m4d)/5,m4ht/2-m4d) \
@@ -783,30 +815,87 @@ define(`fuse',`eleminit_(`$1')
line from rvec_((m4wd-2*m4d)*4/5,m4ht/2-m4d) \
to rvec_((m4wd-2*m4d)*4/5,-m4ht/2+m4d) }
{lbox(m4wd,m4ht)}
- move to rvec_(m4wd,0); line to rvec_(max(0,rp_len/2-m4wd/2),0)}')
+ move to rvec_(m4wd,0); line to rvec_(max(0,rp_len/2-m4wd/2),0)')
sc_draw(`m4fusetype',A,
`arc cw to rvec_(m4ht,0) rad m4ht/2 with .c at rvec_(m4ht/2,0)dnl
ifelse(m4a,d,`; {dot(at last arc.start,,1)}')
arc ccw to rvec_(m4ht,0) rad m4ht/2 with .c at rvec_(m4ht/2,0)
line to rvec_(max(0,rp_len/2-m4wd/2),0)dnl
- ifelse(m4a,d,`; dot(at last line.start,,1)') }')
+ ifelse(m4a,d,`; dot(at last line.start,,1)')')
+ sc_draw(`m4fusetype',SB,
+ `{lbox(m4wd,m4ht)}
+ {line to rvec_(m4wd+max(0,rp_len/2-m4wd/2),0)}
+ {m4fshade(m4fill,lbox(m4wd/5,m4ht))}
+ move to rvec_(m4wd,0); line to rvec_(max(0,rp_len/2-m4wd/2),0)')
sc_draw(`m4fusetype',B,
`{lbox(m4wd,m4ht)}
- line to rvec_(m4wd+max(0,rp_len/2-m4wd/2),0)}')
+ line to rvec_(m4wd+max(0,rp_len/2-m4wd/2),0)')
sc_draw(`m4fusetype',C,
`{lbox(m4wd,m4ht)}
{line from rvec_(m4wd/5,-m4ht/2) \
to rvec_(m4wd/5,m4ht/2)}
{line from rvec_(m4wd*4/5,-m4ht/2) \
to rvec_(m4wd*4/5,m4ht/2)}
- move to rvec_(m4wd,0); line to rvec_(max(0,rp_len/2-m4wd/2),0)}')
+ move to rvec_(m4wd,0); line to rvec_(max(0,rp_len/2-m4wd/2),0)')
sc_draw(`m4fusetype',S,
`{lbox(m4wd,m4ht)}
{m4fshade(m4fill,lbox(m4wd/5,m4ht))}
- move to rvec_(m4wd,0); line to rvec_(max(0,rp_len/2-m4wd/2),0)}')
+ move to rvec_(m4wd,0); line to rvec_(max(0,rp_len/2-m4wd/2),0)')
+ }
{[box invis ht_ m4ht wid_ m4wd] at rvec_(rp_len/2,0)}
line to rvec_(rp_len,0) invis ')
+ `arrester( linespec, [G|E|S][D[L]], len, ht )
+ G= spark gap (default)
+ E= gas discharge
+ S= surge
+ D= double (creates 3-terminal element)
+ DL= double, left orientation'
+define(`arrester',
+ `define(`m4wd',ifelse(`$3',,`dimen_/2',`($3)'))dnl
+ define(`m4ht',ifelse(`$4',,`dimen_/5',`($4)'))dnl
+ define(`m4arm',ifinstr(`$2',L,,-))dnl
+ define(`m4ardna',`patsubst(patsubst(`$2',L),D)')dnl
+ define(`m4awd',arrowwid*4/3)define(`m4aht',arrowht*2/3)dnl
+ define(`m4len',`ifinstr(`$2',D,`ifelse(`$1',,dimen_)',`$1')')dnl
+ ifinstr(`$2',D,[)eleminit_(m4len)ifinstr(`$2',D,,`;{')dnl
+ ifinstr( m4ardna,S,
+ `line to rvec_(max(0,rp_len/2-m4wd/2),0)
+ {lbox(m4wd,m4ht)}
+ {arrow to rvec_(m4wd*0.4,0) wid m4awd ht m4aht}
+ ifinstr(`$2',D,
+ `A: 3rd last line.start; B: last line.end; C: 1/2 between A and B
+ move to rvec_(m4wd/2,m4arm`'(-m4ht/2))
+ Gb: line to rvec_(0,m4arm`'(m4ht*2))
+ G: Here]',
+ `line from rvec_(m4wd,0) to rvec_(max(0,rp_len/2+m4wd/2),0)}
+ {[box invis ht_ m4ht wid_ m4wd] at rvec_(rp_len/2,0)}
+ line to rvec_(rp_len,0) invis ') ',
+ m4ardna,E,
+ `arrow to rvec_(max(0,rp_len/2-m4wd/8),0) wid m4awd ht m4aht
+ {dot(at rvec_(-m4aht/4,-m4wd/4),dotrad_*2/3)}
+ {move to rvec_(m4wd/4,0)
+ arrow <- to rvec_(max(0,rp_len/2-m4wd/8),0) wid m4awd ht m4aht }
+ {circle diam m4wd at rvec_(m4wd/8,0)}
+ ifinstr(`$2',D,
+ `A: 2nd last arrow.start; B: last arrow.end; C: last circle.c
+ move to rvec_(m4wd/8,m4arm`'(-m4ht/2))
+ Gb: line to rvec_(0,m4arm`'ifelse(`$3',,`dimen_/2',`($3)'))
+ G: Here]',
+ `}; {[box invis ht_ m4wd wid_ m4wd] at rvec_(rp_len/2,0)}
+ line to rvec_(rp_len,0) invis ')',
+ `define(`m4wd',ifelse(`$3',,`dimen_/8',`($3)'))dnl
+ arrow to rvec_(max(0,rp_len/2-m4wd/2),0) wid m4awd ht m4aht
+ { move to rvec_(m4wd,0)
+ arrow <- to rvec_(max(0,rp_len/2-m4wd/2),0) wid m4awd ht m4aht }
+ ifinstr(`$2',D,
+ `A: 2nd last arrow.start; B: last arrow.end; C: 1/2 between A and B
+ move to rvec_(m4wd/2,m4arm`'(-m4awd))
+ Gb: line to rvec_(0,m4arm`'ifelse(`$3',,`dimen_/2',`($3)'))
+ G: Here]',
+ `}; {[box invis ht_ m4ht wid_ m4wd+2*m4aht] at rvec_(rp_len/2,0)}
+ line to rvec_(rp_len,0) invis ')')')
+
`memristor( linespec, wid, ht )'
define(`memristor',`eleminit_(`$1')
define(`m4ht',ifelse(`$3',,`dimen_/5',`($3)'))define(`m4htx',`m4ht/4')dnl
@@ -949,10 +1038,11 @@ define(`arrowline',`line ifelse(`$1',,`to rvec_(elen_,0)',`$1')
chop lin_leng(last line)/2-arrowht/2
[box invis ht_ arrowwid wid_ arrowht] at last line.c }')
- `ground( at position, T, N|F|S|L|P|E, D|U|L|R|degrees)
+ `ground( at position, T, N|F|S|L|P[A]|E,
+ D|U|L|R|degrees)
T=truncated stem; N=normal ground,
F=frame, S=signal, L=low-noise, P=protective,
- E=European;
+ E=European; PA=protective alternate
down (default), up, left, right, angle (deg)'
define(`ground',`box invis ht 0 wid 0 with .c ifelse(`$1',,`at Here',`$1')
define(`m4v',`dimen_/6')define(`m4h',`dimen_/16')dnl
@@ -979,6 +1069,12 @@ define(`ground',`box invis ht 0 wid 0 with .c ifelse(`$1',,`at Here',`$1')
arc cw rad m4v*3/2 from rvec_(Rect_(m4v*3/2,-60)) \
to rvec_(Rect_(m4v*3/2,60)) with .c at Here}
ground(,T,,`$4')',
+ `$3',PA,
+ `{Grnd_T: line to rvec_(0,m4v*1.6) \
+ then to rvec_(5.5*m4h,0) \
+ then to rvec_(0,-m4v*1.6) \
+ then to Here}
+ ground(at rvec_(m4h,0),T,,`$4')',
`$3',P,
`{Grnd_C: circle rad m4v*3/2 at rvec_(m4h,0)}
ground(,T,,`$4')',
@@ -1146,7 +1242,6 @@ define(`lswitch',`eleminit_(`$1') dnl
arrowht = m4t1 ; arrowwid = m4t2; ifelse(`$4',,,`{`$4'}')
line to rvec_(rp_len,0) invis ')
-
`dswitch(linespec,R,W[ud]B[K] chars)
Comprehensive IEEE-IEC single-pole switch:
arg2=R: orient to the right of drawing dir
@@ -1180,6 +1275,8 @@ define(`lswitch',`eleminit_(`$1') dnl
MMR = momentary contact on make and release
O = hand operation button
P = pushbutton
+ Pr[T|M] = proximity [touch-sensitive or
+ magnetically controlled]
R = time-delay operating arm
Sd = Switch-disconnector
Th = thermal control linkage
@@ -1281,6 +1378,10 @@ define(`m4R',`ifelse(`$2',R,-)')define(`m4sc',`dimen_/24')dnl
move to M4dT1+vec_(0,m4c`'m4dTr/2)
m4fshade(0,lbox(m4dTr,m4dTr))
point_(m4angtmp) ')
+ sc_draw(`dna_',PrM,
+ `M4T: Proxim(dimen_/3) at M4B.c+ta_xy(0,ifelse(m4a,d,-)8)
+ line dashed dimen_/16 from M4B.c to M4T chop 0 chop dimen_/6
+ Magn(dimen_/3,dimen_/6) at M4T+vec_(0,ifelse(m4a,d,-)dimen_/4)')
sc_draw(`dna_',M,
`define(`m4t',ifelse(m4a,d,-))dnl
M4T: M4B.c+ta_xy(0,m4t`'12)
@@ -1294,6 +1395,13 @@ define(`m4R',`ifelse(`$2',R,-)')define(`m4sc',`dimen_/24')dnl
sc_draw(`dna_',O,
`line from M4T + ta_xy(-2.5,0) \
to M4T + ta_xy(2.5,0) ')
+ sc_draw(`dna_',PrT,
+ `M4T: Proxim(dimen_/3) at M4B.c+ta_xy(0,ifelse(m4a,d,-)8)
+ line dashed dimen_/16 from M4B.c to M4T chop 0 chop dimen_/6
+ line to rvec_(dimen_/4,0) with .c at M4T+vec_(0,ifelse(m4a,d,-)dimen_/6)')
+ sc_draw(`dna_',Pr,
+ `M4T: Proxim(dimen_/3) at M4B.c+ta_xy(0,ifelse(m4a,d,-)8)
+ line dashed dimen_/16 from M4B.c to M4T chop 0 chop dimen_/6 ')
sc_draw(`dna_',P,
`line from M4T + ta_xy(-2.5,-2.5) \
to M4T + ta_xy(-2.5,0) \
@@ -2118,6 +2226,7 @@ define(`c_fet',`mosfet(`$1',`$2',`ZSDF'ifelse(`$3',P,d)T,,`$4')')
udM: G pin to channel center or
u: pin at drain end, d: pin at source end
udMn: gates G0 to Gn as above
+ Py: parallel diode
Pz: parallel zener diode
Q: connect B pin to S pin
R: thick channel
@@ -2200,15 +2309,18 @@ define(`mosfet',
Gl: line from tr_xy(2,(m4s+1)) \
to tr_xy(-2,(m4s+1)) \
then to G')')
- sc_draw(`dna_',Pz,
+ sc_draw(`dna_',Py,`pushdef(`m4pdd_mosfet')')
+ sc_draw(`dna_',Pz,`pushdef(`m4pdd_mosfet',Z)')
+ ifdef(`m4pdd_mosfet',
`define(`m4q',m4a)dnl
Diode: diode(ifelse(m4q,d,to,from) tr_xy(-2,-2) \
- ifelse(m4q,d,from,to) tr_xy( 2,-2),Z)
+ ifelse(m4q,d,from,to) tr_xy( 2,-2),m4pdd_mosfet)
ifelse(m4q,d,rp_ang = rp_ang + pi_)
line from tr_xy(-2,0) \
to tr_xy(-2,-2) \
then to tr_xy(2,-2) \
- then to tr_xy(2,0)')
+ then to tr_xy(2,0)
+ popdef(`m4pdd_mosfet')')
sc_draw(`dna_',Q,
`Ql: line from tr_xy(0,0)+vec_(0,m4R`'linethick pt__) \
to tr_xy(0,0) \
@@ -2464,8 +2576,10 @@ define(`resized',`define(`m4resiztmp',dimen_)define(`dimen_',(dimen_)*(`$1'))dnl
`variable(`element', type, angle, length)
overlaid arrow or line on two-terminal element
- to show variablility: type = [A|P|L|[u]N][C|S]
+ to show variablility:
+ type = [A|P|L|[u]N|[u]NN][C|S]
A=arrow, P=preset, L=linear, N=nonlinear,
+ NN=symmetric nonlinear, u changes direction,
C=continuous, S=setpwise'
define(`variable',`$1
{[ define(`dna_',`ifelse($2,,A,$2)') ang = ifelse(`$3',,45,`$3')
@@ -2473,6 +2587,11 @@ define(`variable',`$1
sc_draw(`dna_',P,`Line: line to M4_T
[line to (Rect_(dimen_/6,ang-90))] at Line.end')
sc_draw(`dna_',L,`Line: line to M4_T')
+ sc_draw(`dna_',NN,`Line: ifelse(m4a,u,
+ `line from Here-(dimen_/6,0) to Here \
+ then to M4_T then to M4_T+(dimen_/6,0)',
+ `line from Here-(0,dimen_/6) to Here \
+ then to M4_T then to M4_T+(0,dimen_/6)') ')
sc_draw(`dna_',N,`Line: line to M4_T
ifelse(m4a,u,`line up dimen_/6 from Line.end',
`line left dimen_/6 from Line.start')')
@@ -2669,7 +2788,6 @@ define(`contact',`[ dnl
')
`$3'] ')
-
`relaycoil( chars, wid, ht, U|D|L|R|degrees )
chars:
X or default: external lines from A2 and B2
@@ -2679,8 +2797,8 @@ define(`contact',`[ dnl
SO slow operating
SOR slow operating and release
SR slow release
- HS hight speed
- HS hight speed
+ HS high speed
+ HS high speed
NAC unaffected by AC current
AC AC current
ML mechanically latched
@@ -2951,7 +3069,7 @@ define(`m4pcrpin',`[ifinstr(`$2',F,`circle diam `$1'',
`Header(1|2,rows,wid,ht,type)
arg1: number of columns
arg2: pins per column
- arg3,4: custom sizes
+ arg3,4: custom wid, ht
arg5: eg fill_(0.9)'
define(`Header',
`[define(`m4Hm',`ifelse(`$2',,2,`$2')')define(`m4Hn',`ifelse(`$1',,1,`$1')')dnl
@@ -3041,7 +3159,8 @@ define(`gyrator',
down Box.ht/4 then right N1b.x-N1a.x then up Box.ht/4
arcd(Box+(0,Box.ht/4),(N1b.x-N1a.x)/3,90+90,90+270)
`$5')') ')
-
+ `proximity(linespec)'
+define(`proximity',`consource(`$1',P)')
`nullator(linespec, wid, ht)'
define(`nullator',`eleminit_(`$1')
define(`m4wd',ifelse(`$2',,`dimen_/2',`($2)'))dnl
@@ -3080,6 +3199,25 @@ define(`norator',`eleminit_(`$1')
{[box invis ht_ m4ht wid_ m4wd] at rvec_(rp_len/2,0)}
line to rvec_(rp_len,0) invis ')
+ `ACsymbol(at position, len, ht, [A]U|D|L|R|degrees)
+ Arg4: drawing direction (default: current direction)
+ Arg4 contains A: use arcs instead of sinusoid
+ A convenience for drawing a 1-cycle sinusoid,
+ e.g. source; ACsymbol(at last [])'
+define(`ACsymbol',`[ Origin: Here
+ define(`m4range',`ifelse(`$2',,(dimen_/3),`($2)')')dnl
+ define(`m4ACd',patsubst(`$4',A))dnl
+ setdir_(ifelse(m4ACd,,`ifdef(`m4a_',rp_ang*rtod_,0)',m4ACd))
+ Start: rvec_(-m4range/2,0)
+ End: rvec_( m4range/2,0)
+ define(`m4amp',`ifelse(`$3',,`m4range/3',`($3)/2')')
+ ifinstr(ifgpic(A)`$4',A,
+ `{ arc ccw to Start with .c at rvec_(-m4range/4,-max(m4range/4-m4amp,0)) }
+ { arc ccw to End with .c at rvec_( m4range/4, max(m4range/4-m4amp,0)) }',
+ `{ sinusoid(m4amp,twopi_/m4range,pi_/2,-m4range/2,m4range/2) \
+ with .Origin at Origin } ')
+ `$5'; resetdir_ ] with .Origin ifelse(`$1',,`at Here',`$1')')
+
`n-terminal box
nterm(box specs; other commands,
nw,nn,ne,ns,
@@ -3156,16 +3294,37 @@ define(`bell',`[setdir_($1,R)
In2: Here
In3: rvec_(0,-m4h/4)
`$3'; resetdir_ ]')
- `microphone(U|D|L|R|degrees, vert size)'
-define(`microphone',`[setdir_($1,R)
- define(`m4h',`ifelse(`$2',,`dimen_/2',`($2)')')dnl
- {L1: line from rvec_(m4h,-m4h/2) \
- to rvec_(m4h,m4h/2)}
- {Circle: circle diameter m4h at rvec_(m4h/2,0)}
- In1: rvec_(m4h*(2-sqrt(3))/4,m4h/4)
- In2: Here
- In3: rvec_(m4h*(2-sqrt(3))/4,-m4h/4)
- `$3'; resetdir_ ]')
+ `microphone(A|U|D|L|R|degrees, vert size)
+ Arg1= A, upright mic
+ Thanks to Arnold Knott'
+define(`microphone',`ifinstr(`$1',A,
+ `[ define(`m4sfact',`(ifelse(`$2',,dimen_,(`$2'))*8/5)')
+ circlerad = m4sfact/1000
+ cspace = m4sfact/100
+ bwd = m4sfact/10
+ bht = m4sfact/4+bwd
+ Stand: line up m4sfact/5
+ { arc from Here+(-bwd,bwd) to Here+(bwd,bwd) with .c at Here+(0,bwd)
+ line up m4sfact/4-bwd from last arc.start
+ line up m4sfact/4-bwd from last arc.end }
+ Head: box rad bwd/2 ht bht wid bwd with .s at Here+(0,bwd/2)
+ Inner: box rad bwd/2 ht bht/2+bwd/2 wid bwd with .n at Head.n
+ move to Inner.s+(0,bwd/2)
+ for i=1 to 4 do {
+ for j=-1 to 1 do {
+ { circle at Here+(3*j*cspace,(abs(j)-3)*cspace) }
+ if j != 0 then {{ circle at Here+(j*3/2*cspace,0) }} }
+ move up 5*cspace } ]',
+ `[setdir_($1,R)
+ define(`m4h',`ifelse(`$2',,`dimen_/2',`($2)')')dnl
+ {L1: line from rvec_(m4h,-m4h/2) \
+ to rvec_(m4h,m4h/2)}
+ {Circle: circle diameter m4h at rvec_(m4h/2,0)}
+ In1: rvec_(m4h*(2-sqrt(3))/4,m4h/4)
+ In2: Here
+ In3: rvec_(m4h*(2-sqrt(3))/4,-m4h/4)
+ `$3'; resetdir_ ]')')
+
`buzzer(U|D|L|R|degrees, vert size,[C])'
define(`buzzer',`[setdir_($1,R)
ifelse(`$3',,
diff --git a/graphics/circuit_macros/libgen.m4 b/graphics/circuit_macros/libgen.m4
index 29a7e0811e..e03ab1ae27 100644
--- a/graphics/circuit_macros/libgen.m4
+++ b/graphics/circuit_macros/libgen.m4
@@ -2,7 +2,7 @@ divert(-1)
libgen.m4 Base macros for dpic and gpic diagrams
-* Circuit_macros Version 9.2, copyright (c) 2020 J. D. Aplevich under *
+* Circuit_macros Version 9.3, copyright (c) 2020 J. D. Aplevich under *
* the LaTeX Project Public Licence in file Licence.txt. The files of *
* this distribution may be redistributed or modified provided that this *
* copyright notice is included and provided that modifications are clearly *
@@ -110,7 +110,7 @@ ifgpic(` if (rp_len == 0) then { rp_ang=0 } else {')dnl
dnl Insert customizations as desired,
dnl e.g. ifmpost(` ... ') etc
ifdef(`local_init',`
-`# local'_init start
+`# local'_init begin
local_init
`# local'_init end
') `$1' dnl Customizations in arg1
@@ -173,15 +173,15 @@ define(`SIdefaults',
ellipseht = 12
ellipsewid = 18
dashwid = 2
- maxpswid = 8.5*25.4
- maxpsht = 11.5*25.4
+ maxpswid = 8.5*scale
+ maxpsht = 11.5*scale
')
`Conditionally add mpost code for latex command'
define(`latexcommand',`command "ifmpost(verbatimtex) `$1' ifmpost(etex)"')
define(`m4announceprocessor',`dnl Do not change the format of the next line:
-`#' `$1' Version 9.2: ifelse(m4picprocessor,gpic,`Gpic',
+`#' `$1' Version 9.3: ifelse(m4picprocessor,gpic,`Gpic',
m4postprocessor,pstricks,`PSTricks',
m4postprocessor,pgf,`TikZ PGF',
m4postprocessor,mfpic,`Mfpic',
@@ -773,6 +773,15 @@ ifelse(index(`$1',"),0,`substr(`$1',1,eval(len(`$1')-2))',`$1')}dnl
wid s_wd(,`textwid') ht s_ht(,`textht')+s_dp')')
define(`text_ang',90)
+ `r_text(text,degrees)
+ (requires PSTricks, pgf, or svg)'
+define(`r_text',`define(`m4txt',
+`ifelse(index(`$1',"),0,`substr(`$1',1,eval(len(`$1')-2))',`$1')')dnl
+define(`m4rtang',`ifelse(`$2',,90,`$2')')dnl
+ifsvg(`svg_rot(m4rtang,"m4txt")')dnl
+ifpstricks(`"\rput[c]{m4rtang}(0,0){m4txt}"')dnl
+ifpgf(`"\pgftext[rotate=m4rtang]{m4txt}"')')
+
`Like s_box but text is rotated text_ang degrees
(requires PSTricks or pgf)'
define(`rs_box',
@@ -1509,8 +1518,8 @@ define(`sinc',`sin(max(pi_*abs(`$1'),1e-6))/max(pi_*abs(`$1'),1e-6)')
`sinusoid(amplitude, frequency, phase,
tmin,tmax, linetype )
- in the current direction (only with dpic) in [ ]
- brackets; e.g., to draw a dashed sine curve,
+ cosine curve in the current direction (only with dpic)
+ in [ ] brackets; e.g., to draw a dashed sine curve,
amplitude a, of n cycles over length 0 to x:
sinusoid(a,twopi_*n/x,-pi_/2,0,x,dashed) \
with [.Start|.End|.Origin] at position'
diff --git a/graphics/circuit_macros/liblog.m4 b/graphics/circuit_macros/liblog.m4
index 495ab2ad2b..ce261707ca 100644
--- a/graphics/circuit_macros/liblog.m4
+++ b/graphics/circuit_macros/liblog.m4
@@ -1,7 +1,7 @@
divert(-1)
liblog.m4 Logic gates
-* Circuit_macros Version 9.2, copyright (c) 2020 J. D. Aplevich under *
+* Circuit_macros Version 9.3, copyright (c) 2020 J. D. Aplevich under *
* the LaTeX Project Public Licence in file Licence.txt. The files of *
* this distribution may be redistributed or modified provided that this *
* copyright notice is included and provided that modifications are clearly *
@@ -52,6 +52,8 @@ define(`Mux_wid',8) `Multiplexer defaults'
define(`Mux_ht',18)
define(`lg_plen',4) `Logic pin'
+define(`lg_pinsep',`(3*L_unit)') `logic pin separation in logic units'
+define(`lg_chipwd',`(18*L_unit)') `default chip width'
define(`lg_pintxt',
`"ifxfig(`$1',`ifsvg(`svg_small(`$1',75)',`sp_{\scriptsize `$1'}sp_')')"')
`Logic pin text with bar where possible'
@@ -485,17 +487,17 @@ define(`NOT_gate',`ifinstr(`$2',B,
`The comprehensive logic pin:
lg_pin(location, label, Picname, n|e|s|w [L|M|I|O][N][E], pinno, optlen)
- label=text indicating logical pin function;
- Picname=pic label for referring to the pin;
- n|e|s|w=orientation;
+ label=text (indicating logical pin function, usually)
+ Picname=pic label for referring to the pin
+ n|e|s|w=orientation (north, east, south, west)
L=active low out; M=active low in; I=inward arrow; O=outward arrow
- N=negated; E=edge trigger'
+ N=negated (NOT-circle); E=edge trigger'
define(`lg_pin',`ifelse(`$1',,,`move to $1')
- define(`dna_',`substr(`$4',1)')define(`m4lE',)define(`m4lN',)dnl
+ define(`dna_',`substr(`$4',1)')define(`m4lE',)define(`m4lch',0)dnl
define(`m4ld',`ifelse(`$4',,e,`substr(`$4',0,1)')')dnl
define(`m4lph',`ifelse(m4ld,n,0,m4ld,w,-1,m4ld,s,0,1)')dnl
define(`m4lpv',`ifelse(m4ld,n,1,m4ld,w,0,m4ld,s,-1,0)')dnl
- define(`m4lpl',`ifelse(`$6',,`lg_plen',`$6')')dnl
+ define(`m4lpl',`ifelse(`$6',,`lg_plen',(`$6')/L_unit)')dnl
sc_draw(`dna_',E,`define(`m4lE',1)dnl
{ line from rsvec_(lp_xy(0,N_rad)) \
to rsvec_(lp_xy(-N_diam*sqrt(3)/2,0)) then to rsvec_(lp_xy(0,-N_rad)) }')
@@ -504,29 +506,22 @@ define(`lg_pin',`ifelse(`$1',,,`move to $1')
m4ld,s,`above_',`rjust_') at Here dnl
ifxfig(`+(lp_xy(-0.72bp__,0))') dnl
ifelse(m4lE,1,`+svec_(lp_xy(-N_diam*sqrt(3)/2,0))') }')
- sc_draw(`dna_',N,`define(`m4lN',N)
+ sc_draw(`dna_',N,`define(`m4lch',N_diam*L_unit)
{ NOT_circle \
at rsvec_(lp_xy(N_rad,0)) }')
- sc_draw(`dna_',L,`define(`m4lN',M)
+ sc_draw(`dna_',L,`define(`m4lch',N_rad*2.5*L_unit)
{line from rsvec_(lp_xy(0,
- ifelse(m4ld,w,-,m4ld,s,-)N_rad*3/2)) to rsvec_(lp_xy(N_rad*2.5,0)) }')
- sc_draw(`dna_',M,`define(`m4lN',M)
+ ifelse(m4ld,w,-,m4ld,s,-)N_rad*3/2)) to rsvec_(lp_xy(N_rad*2.5,0)) \
+ then to Here }')
+ sc_draw(`dna_',M,`define(`m4lch',N_rad*2.5*L_unit)
{ line to rsvec_(lp_xy(N_rad*2.5,
- ifelse(m4ld,w,-,m4ld,s,-)N_rad*3/2)) then to rsvec_(lp_xy(N_rad*2.5,0))}')
- {ifelse(`$3',,,`$3':) line to rsvec_(lp_xy(m4lpl,0))dnl
- ifelse(m4lN,N,`chop N_diam*L_unit chop 0')dnl
+ ifelse(m4ld,w,-,m4ld,s,-)N_rad*3/2)) then to rsvec_(lp_xy(N_rad*2.5,0)) \
+ then to Here}')
+ {ifelse(`$3',,,`$3':) line to rsvec_(lp_xy(m4lpl,0)) chop m4lch chop 0 dnl
ifinstr(dna_,I,` <- wid linethick*5.6bp__ ht linethick*7.2bp__ ')dnl
ifinstr(dna_,O,` -> wid linethick*5.6bp__ ht linethick*7.2bp__ ')
- ifelse(`$5',,,`lg_pintxt(`$5') dnl
- at rsvec_(lp_xy(vscal_(1/(L_unit),1pt__,0))) dnl
- ifgpic(
- `ifelse(m4ld,n,`+svec_(lp_xy(4pt__/(L_unit),0)) rjust_ below_',
- m4ld,w,`+svec_(lp_xy(vscal_(1/(L_unit),1pt__,3pt__))) \
- ljust_ above_',
- m4ld,s,`+svec_(lp_xy(2pt__/(L_unit),0)) rjust_ above_',
- `+svec_(lp_xy(0,-3pt__/(L_unit))) rjust_ above_') ',
- `ifelse(m4ld,n,`rjust_ below_', m4ld,w,`ljust_ above_',
- `rjust_ above_')')') dnl
+ ifelse(`$5',,,`move to last line.c; lg_pintxt(`$5') dnl
+ ifelse(m4ld,n,`rjust_', m4ld,w,`above_',m4ld,e,`above_',`rjust_')')
} ')
define(`lp_xy',`vrot_(`$1',`$2',m4lph,m4lpv)')
@@ -746,16 +741,6 @@ define(`m4ifboolvar_',
define(`m4stackdump',`ifdef(`$1',`ifelse($1,,`popdef(`$1')',
`$2`'popdef(`$1')m4stackdump(`$1',`$2')')')')dnl
-# ****Obsolete `Define positions In1, In2, ... equal to
-# positions stacked in `arg2', prefixed by arg1.
-# If arg3 is not null then In is replaced by arg3.
-# eg H:And(x,y); stackpromote_(H,`AutoInNames',In_)'
-#define(`stackpromote_',`define(`m4nct',0)
-#`#' Promoting stack `$2':
-#stackexec_(`$2',`m4R_',`ifelse($2,,,`define(`m4nct',incr(m4nct))
-#ifelse(`$3',,In,$3)`'m4nct: ifelse(`$1',,,$1.)$2')')
-#stackexec_(`m4R_',`$2')')
-
define(`DrawIn',`
# Draw and label input $1
PrevInput: PrevInput-ifdef(`m4LI',`(0,autoinputsep)',
diff --git a/graphics/circuit_macros/mfpic.m4 b/graphics/circuit_macros/mfpic.m4
index 2b38512d43..6e68706e24 100644
--- a/graphics/circuit_macros/mfpic.m4
+++ b/graphics/circuit_macros/mfpic.m4
@@ -1,7 +1,7 @@
divert(-1)
mfpic.m4 Initialization for mfpic.
-* Circuit_macros Version 9.2, copyright (c) 2020 J. D. Aplevich under *
+* Circuit_macros Version 9.3, copyright (c) 2020 J. D. Aplevich under *
* the LaTeX Project Public Licence in file Licence.txt. The files of *
* this distribution may be redistributed or modified provided that this *
* copyright notice is included and provided that modifications are clearly *
diff --git a/graphics/circuit_macros/mpost.m4 b/graphics/circuit_macros/mpost.m4
index b2ce311049..0698a3d8d9 100644
--- a/graphics/circuit_macros/mpost.m4
+++ b/graphics/circuit_macros/mpost.m4
@@ -1,7 +1,7 @@
divert(-1)
mpost.m4 Initialization for metapost.
-* Circuit_macros Version 9.2, copyright (c) 2020 J. D. Aplevich under *
+* Circuit_macros Version 9.3, copyright (c) 2020 J. D. Aplevich under *
* the LaTeX Project Public Licence in file Licence.txt. The files of *
* this distribution may be redistributed or modified provided that this *
* copyright notice is included and provided that modifications are clearly *
diff --git a/graphics/circuit_macros/pgf.m4 b/graphics/circuit_macros/pgf.m4
index 9117f8f537..5b292ccaea 100644
--- a/graphics/circuit_macros/pgf.m4
+++ b/graphics/circuit_macros/pgf.m4
@@ -1,7 +1,7 @@
divert(-1)
pgf.m4 Initialization for Tikz-pgf.
-* Circuit_macros Version 9.2, copyright (c) 2020 J. D. Aplevich under *
+* Circuit_macros Version 9.3, copyright (c) 2020 J. D. Aplevich under *
* the LaTeX Project Public Licence in file Licence.txt. The files of *
* this distribution may be redistributed or modified provided that this *
* copyright notice is included and provided that modifications are clearly *
diff --git a/graphics/circuit_macros/postscript.m4 b/graphics/circuit_macros/postscript.m4
index a59d78e177..21072c1d17 100644
--- a/graphics/circuit_macros/postscript.m4
+++ b/graphics/circuit_macros/postscript.m4
@@ -1,7 +1,7 @@
divert(-1)
postscript.m4 Initialization for Postscript output.
-* Circuit_macros Version 9.2, copyright (c) 2020 J. D. Aplevich under *
+* Circuit_macros Version 9.3, copyright (c) 2020 J. D. Aplevich under *
* the LaTeX Project Public Licence in file Licence.txt. The files of *
* this distribution may be redistributed or modified provided that this *
* copyright notice is included and provided that modifications are clearly *
diff --git a/graphics/circuit_macros/psfrag.m4 b/graphics/circuit_macros/psfrag.m4
index 999723386d..7bf1df5656 100644
--- a/graphics/circuit_macros/psfrag.m4
+++ b/graphics/circuit_macros/psfrag.m4
@@ -2,7 +2,7 @@ divert(-1)
psfrag.m4 Initialization for dpic -f processing:
Postscript with psfrag strings
-* Circuit_macros Version 9.2, copyright (c) 2020 J. D. Aplevich under *
+* Circuit_macros Version 9.3, copyright (c) 2020 J. D. Aplevich under *
* the LaTeX Project Public Licence in file Licence.txt. The files of *
* this distribution may be redistributed or modified provided that this *
* copyright notice is included and provided that modifications are clearly *
diff --git a/graphics/circuit_macros/pstricks.m4 b/graphics/circuit_macros/pstricks.m4
index 8d20667140..efe7cafe16 100644
--- a/graphics/circuit_macros/pstricks.m4
+++ b/graphics/circuit_macros/pstricks.m4
@@ -1,7 +1,7 @@
divert(-1)
pstricks.m4 Initialization for PSTricks.
-* Circuit_macros Version 9.2, copyright (c) 2020 J. D. Aplevich under *
+* Circuit_macros Version 9.3, copyright (c) 2020 J. D. Aplevich under *
* the LaTeX Project Public Licence in file Licence.txt. The files of *
* this distribution may be redistributed or modified provided that this *
* copyright notice is included and provided that modifications are clearly *
diff --git a/graphics/circuit_macros/svg.m4 b/graphics/circuit_macros/svg.m4
index e270060393..84f7e21e06 100644
--- a/graphics/circuit_macros/svg.m4
+++ b/graphics/circuit_macros/svg.m4
@@ -1,7 +1,7 @@
divert(-1)
svg.m4 Initialization for SVG output.
-* Circuit_macros Version 9.2, copyright (c) 2020 J. D. Aplevich under *
+* Circuit_macros Version 9.3, copyright (c) 2020 J. D. Aplevich under *
* the LaTeX Project Public Licence in file Licence.txt. The files of *
* this distribution may be redistributed or modified provided that this *
* copyright notice is included and provided that modifications are clearly *
@@ -41,24 +41,58 @@ define(`svg_gt',`$1')
',
`define(`svg_tspan',`patsubst(<tspan `$1'
>`$2'</tspan>,",\\")')
-define(`svg_font',`
+divert(-1)
+ `svg_font(fontname,nominal ht:dptextratio,textoffset)
+ or svg_font(fontname,nominal ht:dptextratio,textoffset,
+ text)
+ Note: nominal ht = text height in drawing units,
+ e.g. 12bp__ for 12pt text
+   actual height = nominal ht * dptextratio '
+define(`svg_font',`ifinstr(`$2',:,
+ `stacksplit_(`m4svgf',`$2',:)
+ ifelse(m4svgf,,,dptextratio = m4svgf; )popdef(`m4svgf')dnl
+ ifelse(m4svgf,,,`textht=(m4svgf)*dptextratio; ')undefine(`m4svgf')',
+ `dptextratio=svgfontratio(`$1'); dnl
+ ifelse(`$2',,,textht=(`$2')*dptextratio; )')dnl
+ ifelse(`$3',,,`textoffset=`$3'; ')
command "<g patsubst(ifelse(`$1',,,
index(`$1',font),0,`$1',
index(`$1',style),0,`$1',
style="font-family:`$1'")
,",\\")>"
- ifelse(`$2',,,`textht=(`$2')*dptextratio; ')dnl
- ifelse(`$3',,,`textoffset=`$3'; ')dnl
`$4'
ifelse(`$4',,,`command "</g>"')')
+
`e.g. svg_font(Times)
+ svg_font(Times,12bp__:0.66)
svg_font(Times,11bp__,1bp__,"text" at A)
svg_font(font-family="Times")
svg_font(font-family="Times" font-style="italic")
svg_font(style="font-family:Times; font-style:italic")
+
Some fairly safe choices: Arial, Helvetica, Times, Courier, Verdana, Georgia,
Palatino, Garamond, Bookman, Cursive, Trebuchet MS, Arial Black, Impact.
'
+ `svgfontratio(fontname)
+ reasonable dptextratio values for common fonts'
+define(`svgfontratio',`ifinstr(
+`$1',Times,0.66,
+`$1',sans-serif,0.71,
+`$1',Arial,0.71,
+`$1',Helvetica,0.71,
+`$1',Courier,0.57,
+`$1',Cursive,0.7,
+`$1',Verdana,0.72,
+`$1',Georgia,0.70,
+`$1',Palatino,0.66,
+`$1',Garamond,0.62,
+`$1',Bookman,0.66,
+`$1',Comic Sans MS,0.75,
+`$1',Trebuchet MS,0.71,
+`$1',Arial Black,0.71,
+`$1',Impact,0.79,
+dptextratio)')
+
`see http://www.ascii.cl/htmlcodes.htm
and http://webdesign.about.com/od/localization/l/blhtmlcodes-gr.htm'
define(`svg_symbol',`changecom(,)`$1'changecom(`#',)')
@@ -136,6 +170,7 @@ define(`svg_ensp',`svg_symbol(&`#'8194;)')
define(`svg_emsp',`svg_symbol(&`#'8195;)')
define(`svg_thinsp',`svg_symbol(&`#'8201;)')
define(`svg_backsl',`svg_symbol(&`#'92;)')
+define(`svg_pound',`svg_symbol(&`#'35;)')
')
define(`svgcolor',`sprintf("rgb(%g,%g,%g)",\
@@ -156,35 +191,49 @@ define(`svgLinkString',`"<a xlink:href=\"`$1'\"dnl
`$2' dnl
</a>"')
-# svgrot_init(filename)
+# svg_rot_init(filename)
# filename is the basename of the output
# produced by dpic -v filename.pic > filename.svg
-define(`svgrot_init',`NeedDpicTools
+define(`svg_rot_init',`
+`# svg_rot'_init begin
+ NeedDpicTools
define(`_file_',ifelse(`$1',,patsubst(__file__,.m4),`$1'))
syscmd(touch _file_.svg _file_.cor; cp _file_.svg _file_.tmp)
- sh "grep \"^ x=.*\/text>\" _file_.tmp | sed -e dnl
- \"s/x=\\"\([0-9.]*\)\\" y=\\"\([0-9.]*\)\\".*/\1 \2/\" > _file_.cor"
- svgrot_k = 0; svg_rotz = 0
- define svg_rotcoords { svgrot_k += 1
- if "$`'1" != "" then { x[svgrot_k] = $`'1; y[svgrot_k] = $`'2; svg_rotz = 1 }
- }
+# Extract from the .svg file the x= y= coordinates
+# that appear after each transform="rotate(.." line
+ retcode = ( sh "awk -e \"/transform=\\"rotate/ { r=1 }; dnl
+ /x=\\".*y=\\"/ { if(r==1){ print; r=0 } }\" _file_.tmp dnl
+ | sed -e \"s/x=\\"\([0-9.]*\)\\" y=\\"\([0-9.]*\)\\".*/\1 \2/\" dnl
+ > _file_.cor" )
+ if retcode != 0 then { print "
+ Awk failure
+ Awk and sed are required by svg_rot to rotate svg text.
+ " }
+ svgrot_k = 0
+ define svg_rotcoords { if "$`'1" != "" then { svgrot_k += 1
+ svg_rx[svgrot_k] = $`'1; svg_ry[svgrot_k] = $`'2 }
+ }
copythru(svg_rotcoords, _file_.cor)
sh "rm -f _file_.tmp _file_.cor"
- svg_rotk = 0
+ svgrot_i = 0
ifdef(`svg_rot_',,`
-# `svg_rot(deg clockwise rotation,text or object)
-# Requires svgrot_init(filename)
-# Rotation of svg text is a can of worms because
-# the final coordinates of the text are required;
-# this forward reference has to be extracted from
-# the output file and the source processed twice.'
- define svg_rot { if svg_rotz then { svg_rotk += 1; command \
- sprintf("<g transform=\"rotate(%g %g %g)\">",$`'1,x[svg_rotk],y[svg_rotk]) }\
- else { command sprintf("<g transform=\"rotate(%g)\">",$`'1) }
+# `svg_rot(degrees,"text" [at position])
+# Rotate text degrees ccw
+# Requires svg_rot_init(filename)
+# which uses both awk and sed.
+# The source must be processed twice by m4 and dpic.'
+ define svg_rot { if retcode != 0 then {$`'2} else {
+ if "$`'1" != "" then { svg_rang = -($`'1) } else { svg_rang = -90 }
+ if svgrot_k != 0 then { svgrot_i +=1
+ command sprintf("<g transform=\"rotate(%g %g %g)\">",svg_rang,\
+ svg_rx[svgrot_i],svg_ry[svgrot_i]) }\
+ else { command sprintf("<g transform=\"rotate(%g)\">",svg_rang) }
$`'2
- command "</g>" }
- define(`svg_rot_') ')
+ command "</g>" } }
+ define(`svg_rot_')
+ ')
+`# svg_rot'_init end
')
# ---------------------------------------------------------------------------#
diff --git a/graphics/circuit_macros/xfig.m4 b/graphics/circuit_macros/xfig.m4
index 5cc6df1728..f092b44df5 100644
--- a/graphics/circuit_macros/xfig.m4
+++ b/graphics/circuit_macros/xfig.m4
@@ -1,7 +1,7 @@
divert(-1)
xfig.m4 Initialization for xfig.
-* Circuit_macros Version 9.2, copyright (c) 2020 J. D. Aplevich under *
+* Circuit_macros Version 9.3, copyright (c) 2020 J. D. Aplevich under *
* the LaTeX Project Public Licence in file Licence.txt. The files of *
* this distribution may be redistributed or modified provided that this *
* copyright notice is included and provided that modifications are clearly *
diff --git a/graphics/pstricks/contrib/pst-ovl/Changes b/graphics/pstricks/contrib/pst-ovl/Changes
index b1e3740b5b..59686608b8 100644
--- a/graphics/pstricks/contrib/pst-ovl/Changes
+++ b/graphics/pstricks/contrib/pst-ovl/Changes
@@ -1,5 +1,6 @@
pst-ovl.tex ----------- (hv)
+ v 0.07b 2020-05-01 - typos in the documentation
v 0.07a 2017-10-09 - load pstricks.sty first
v 0.07 2016-05-03 - moved code from seminar
- use names as \ps...
diff --git a/graphics/pstricks/contrib/pst-ovl/README b/graphics/pstricks/contrib/pst-ovl/README
index 04a3dd63f1..a97f1c552a 100644
--- a/graphics/pstricks/contrib/pst-ovl/README
+++ b/graphics/pstricks/contrib/pst-ovl/README
@@ -1,12 +1,10 @@
Save the files pst-ovl.sty|.tex| in a directory, which is part of your
local TeX ovl. Then do not forget to run texhash to update this ovl
if these packages are new to your TeX distribution.
-For more information see the documentation of your LaTeX distribution
-on installing packages into your LaTeX distribution or the
-TeX Frequently Asked Questions:
-(http://www.tex.ac.uk/cgi-bin/texfaq2html?label=instpackages).
pst-ovl needs pstricks, which should be part of your
local TeX installation, otherwise get it from a CTAN server, f.ex.
http://mirror.ctan.org/graphics/pstricks/
+
+hvoss@tug.org \ No newline at end of file
diff --git a/graphics/pstricks/contrib/pst-ovl/doc/pst-ovl-doc.bib b/graphics/pstricks/contrib/pst-ovl/doc/pst-ovl-doc.bib
index 96838e3a2d..0ea26b0a83 100644
--- a/graphics/pstricks/contrib/pst-ovl/doc/pst-ovl-doc.bib
+++ b/graphics/pstricks/contrib/pst-ovl/doc/pst-ovl-doc.bib
@@ -66,15 +66,6 @@
}
-@Book{voss:chaos,
- author = {Herbert Vo{\ss}},
- title = {Chaos und {F}raktale selbst programmieren: von {M}andelbrotmengen
- {\"u}ber {F}arbmanipulationen zur perfekten Darstellung},
- publisher = {{Franzis Verlag}},
- year = {1994},
- address = {Poing}
-}
-
@Article{girou:01:,
author = {Denis Girou},
title = {Pr\'esentation de {PST}ricks},
@@ -104,33 +95,13 @@
year = 1989,
}
-@Manual{pstricks,
+@online{pstricks,
Title = {PSTricks - {\PS} macros for generic {\TeX}},
Author = {{Timothy van} Zandt},
- Organization = {},
Address = {\url{http://www.tug.org/application/PSTricks}},
- Note = {},
year = 1993
}
-@Manual{pst-plot,
- Title = {\texttt{pst-plot}: Plotting two dimensional functions and data},
- Author = {{Timothy van} Zandt},
- Organization = {},
- Address = {\url{CTAN:graphics/pstricks/generic/pst-plot.tex}},
- Note = {},
- year = 1999
-}
-
-@Manual{multido,
- Title = {\texttt{multido.tex} - a loop macro, that supports fixed-point addition},
- Author = {{Timothy van} Zandt},
- Organization = {},
- Address = {\url{CTAN:/graphics/pstricks/generic/multido.tex}},
- Note = {},
- year = 1997
-}
-
@Book{PSTricks2,
author = {Herbert Vo\ss},
title = {\texttt{PSTricks} -- {G}rafik f\"ur \TeX{} und \LaTeX},
@@ -156,7 +127,7 @@
address = {Cambridge}
}
-@Manual{wolfram,
+@online{wolfram,
author = {Eric Weisstein},
title = {Wolfram MathWorld},
publisher = {{Wolfram}},
diff --git a/graphics/pstricks/contrib/pst-ovl/doc/pst-ovl-doc.pdf b/graphics/pstricks/contrib/pst-ovl/doc/pst-ovl-doc.pdf
index 152d118906..aea0eb93cf 100644
--- a/graphics/pstricks/contrib/pst-ovl/doc/pst-ovl-doc.pdf
+++ b/graphics/pstricks/contrib/pst-ovl/doc/pst-ovl-doc.pdf
Binary files differ
diff --git a/graphics/pstricks/contrib/pst-ovl/doc/pst-ovl-doc.tex b/graphics/pstricks/contrib/pst-ovl/doc/pst-ovl-doc.tex
index 98f30a1037..070a0da0e4 100644
--- a/graphics/pstricks/contrib/pst-ovl/doc/pst-ovl-doc.tex
+++ b/graphics/pstricks/contrib/pst-ovl/doc/pst-ovl-doc.tex
@@ -1,22 +1,21 @@
-%% $Id: pst-func-doc.tex 599 2011-11-03 19:38:28Z herbert $
-\documentclass[11pt,english,BCOR10mm,DIV12,bibliography=totoc,parskip=false,
+%% $Id: pst-ovl-doc.tex 1169 2020-05-01 14:27:32Z herbert $
+\documentclass[fontsize=11pt,english,BCOR10mm,DIV12,bibliography=totoc,parskip=false,
smallheadings, headexclude,footexclude,oneside]{pst-doc}
-\usepackage[utf8]{inputenc}
\usepackage{pst-ovl}
\let\pstOVLFV\fileversion
\renewcommand\bgImage{}
+\usepackage{ragged2e}
\addbibresource{\jobname.bib}
-\lstset{language=PSTricks,
- morekeywords={psPrintValue},basicstyle=\footnotesize\ttfamily}
+\lstset{language=PSTricks,basicstyle=\footnotesize\ttfamily}
%
\begin{document}
\title{\texttt{pst-ovl}}
\subtitle{Helper functions for overlays; v.\pstOVLFV}
-\author{Herbert Vo\ss}
+\author{Herbert Voß}
\docauthor{}
\date{\today}
\maketitle
@@ -36,7 +35,7 @@ Overlays are made by creating an "`\Lcs{hbox}"' and then outputting the box seve
times, printing different material in the box each time. The box is created by
the commands
\begin{lstlisting}
- \Lcs{psoverlaybox} < stuff >\Lcs{endpsoverlaybox}
+ \psoverlaybox < stuff >\endpsoverlaybox
\end{lstlisting}
\LaTeX{} users can instead write:
\begin{lstlisting}
@@ -88,18 +87,8 @@ It is possible to define macros which hold the numbers:
\psputoverlaybox{\main} \hspace{.5in} \psputoverlaybox{\one}
\end{LTXexample}
-
-
-\clearpage
-\section{List of all optional arguments for \texttt{pst-ovl}}
-
-\xkvview{family=pst-ovl,columns={key,type,default}}
-
-
-
-
\bgroup
-\raggedright
+\RaggedRight
\nocite{*}
\printbibliography
\egroup
diff --git a/graphics/pstricks/contrib/pst-ovl/dvips/pst-ovl.pro b/graphics/pstricks/contrib/pst-ovl/dvips/pst-ovl.pro
index 188299ff6a..f26726d91e 100644
--- a/graphics/pstricks/contrib/pst-ovl/dvips/pst-ovl.pro
+++ b/graphics/pstricks/contrib/pst-ovl/dvips/pst-ovl.pro
@@ -1,4 +1,4 @@
-% $Id: pst-ovl.pro 859 2013-12-21 16:51:58Z herbert $
+% $Id: pst-ovl.pro 1169 2020-05-01 14:27:32Z herbert $
%
%% PostScript prologue for pst-ovl.tex.
%% Version 0.04, 2014/05/12
diff --git a/graphics/pstricks/contrib/pst-ovl/latex/pst-ovl.sty b/graphics/pstricks/contrib/pst-ovl/latex/pst-ovl.sty
index 5eb1d9adcb..fd3638ab6d 100644
--- a/graphics/pstricks/contrib/pst-ovl/latex/pst-ovl.sty
+++ b/graphics/pstricks/contrib/pst-ovl/latex/pst-ovl.sty
@@ -1,13 +1,13 @@
-%% $Id: pst-ovl.sty 859 2013-12-21 16:51:58Z herbert $
+%% $Id: pst-ovl.sty 1169 2020-05-01 14:27:32Z herbert $
%%
-%% pst-ovl.sty Copyright (C) 2017 Herbert Voss <hvoss@tug.org>
+%% pst-ovl.sty Copyright (C) 2017,2020 Herbert Voss <hvoss@tug.org>
%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{pst-ovl}
- [2017/10/09 v0.01 LaTeX wrapper for `pst-ovl' (HV)]
+ [2020/05/01 v0.02 LaTeX wrapper for `pst-ovl' (HV)]
\ProvidesFile{pst-ovl.tex}
- [2017/10/09 v0.07a overlay macros `pst-ovl' (HV)]
+ [2020/05/01 v0.07b overlay macros `pst-ovl' (HV)]
\RequirePackage{pstricks}
\input{pst-ovl}
%\@addtofilelist{pst-ovl.tex}
diff --git a/graphics/pstricks/contrib/pst-ovl/tex/pst-ovl.tex b/graphics/pstricks/contrib/pst-ovl/tex/pst-ovl.tex
index e0d7910586..11909c8cf4 100644
--- a/graphics/pstricks/contrib/pst-ovl/tex/pst-ovl.tex
+++ b/graphics/pstricks/contrib/pst-ovl/tex/pst-ovl.tex
@@ -1,4 +1,4 @@
-%% $Id: pst-ovl.tex 859 2013-12-21 16:51:58Z herbert $
+%% $Id: pst-ovl.tex 1169 2020-05-01 14:27:32Z herbert $
%%
%%
%% This is file `pst-ovl.tex',
@@ -7,7 +7,7 @@
%%
%% Package `pst-ovl.tex'
%%
-%% 2015 -- Timothy Van Zandt
+%% 2015,2020 -- Timothy Van Zandt
%% Herbert Voss <hvoss@tug.org>
%%
%% This program can be redistributed and/or modified under the terms
@@ -24,8 +24,8 @@
%% Requires main PSTricks
\ifx\PSTricksLoaded\endinput\else\input pstricks \fi
%
-\def\fileversion{0.07a}
-\def\filedate{2017/10/09}
+\def\fileversion{0.07b}
+\def\filedate{2020/05/01}
\message{`pst-ovl' v\fileversion, \filedate\space (tvz,hv)}
%
\edef\PstAtCode{\the\catcode`\@} \catcode`\@=11\relax