summaryrefslogtreecommitdiff
path: root/graphics/circuit_macros/doc
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2021-06-04 03:02:48 +0000
committerNorbert Preining <norbert@preining.info>2021-06-04 03:02:48 +0000
commita5ae129f3aa3a3a0aeaa21c55b75a1d543fe4111 (patch)
treefe5e1e212aec203e668df8581a17374cdde352a1 /graphics/circuit_macros/doc
parentd231c6331f53a048d29c2f847254a9f56d5ee2dd (diff)
CTAN sync 202106040302
Diffstat (limited to 'graphics/circuit_macros/doc')
-rw-r--r--graphics/circuit_macros/doc/CapacitorsMan.m441
-rw-r--r--graphics/circuit_macros/doc/Capture.JPGbin25460 -> 0 bytes
-rw-r--r--graphics/circuit_macros/doc/CctTable.tex858
-rw-r--r--graphics/circuit_macros/doc/CctTableMan.m492
-rw-r--r--graphics/circuit_macros/doc/Circuit_macros.bib9
-rw-r--r--graphics/circuit_macros/doc/Circuit_macros.pdfbin973887 -> 973559 bytes
-rw-r--r--graphics/circuit_macros/doc/Circuit_macros.tex11
-rw-r--r--graphics/circuit_macros/doc/InductorsMan.m447
-rw-r--r--graphics/circuit_macros/doc/Makefile22
-rw-r--r--graphics/circuit_macros/doc/MoreTableMan.m436
-rw-r--r--graphics/circuit_macros/doc/Oblique.m44
-rw-r--r--graphics/circuit_macros/doc/ResistorsMan.m430
-rw-r--r--graphics/circuit_macros/doc/SourcesMan.m47
-rw-r--r--graphics/circuit_macros/doc/SwitchesMan.m435
-rw-r--r--graphics/circuit_macros/doc/VariableMan.m417
-rw-r--r--graphics/circuit_macros/doc/Version.tex2
-rw-r--r--graphics/circuit_macros/doc/body.tex635
-rw-r--r--graphics/circuit_macros/doc/currents.m44
-rw-r--r--graphics/circuit_macros/doc/defines.tex762
-rw-r--r--graphics/circuit_macros/doc/fetMan.m4185
-rw-r--r--graphics/circuit_macros/doc/oax.m45
-rw-r--r--graphics/circuit_macros/doc/opampex.m45
-rw-r--r--graphics/circuit_macros/doc/opampexbody.m4 (renamed from graphics/circuit_macros/doc/oaxbody.m4)0
-rw-r--r--graphics/circuit_macros/doc/relaycoilMan.m47
24 files changed, 1119 insertions, 1695 deletions
diff --git a/graphics/circuit_macros/doc/CapacitorsMan.m4 b/graphics/circuit_macros/doc/CapacitorsMan.m4
new file mode 100644
index 0000000000..7234cea453
--- /dev/null
+++ b/graphics/circuit_macros/doc/CapacitorsMan.m4
@@ -0,0 +1,41 @@
+.PS
+# `CapacitorsMan.m4'
+cct_init
+divert(-1)
+
+divert(0)dnl
+
+movewid = 2 pt__
+hm = 2.05
+vm = 0.28
+{ {capacitor ; move ;"`{\tt capacitor}'" ljust}
+ move right_ hm
+ {capacitor(,C); move ;"`{\tt capacitor(,C)}'" ljust}
+ move right_ hm
+ {capacitor(,C+); move ;"`{\tt capacitor(,C+)}'" ljust}
+}
+ move down vm; right_
+{ {capacitor(,P); move ;"`{\tt capacitor(,P)}'" ljust}
+ move right_ hm
+ {capacitor(,E); move ;"`{\tt capacitor(,E)}'" ljust}
+ move right_ hm
+ {capacitor(,K); move ;"`{\tt capacitor(,K)}'" ljust}
+}
+ move down 0.25; right_
+{ {capacitor(,M); move ;"`{\tt capacitor(,M)}'" ljust}
+ move right_ hm
+ {capacitor(,N); move ;"`{\tt capacitor(,N)}'" ljust}
+ move right_ hm
+ {xtal ; move ;"`{\tt xtal}'" ljust}
+}
+ move down 0.25; right_
+{ {capacitor(,dC); move ;"`{\tt capacitor(,dC)}'" ljust}
+ move right_ hm
+ {capacitor(,dF); move ;"`{\tt capacitor(,dF)}'" ljust}
+ move right_ hm
+ {variable(`capacitor',NN,-30,dimen_/3)
+ move ;`"{\tt variable(}`{\tt capacitor',}"' ljust \
+ `"{\enskip\tt NN,-30,dimen\_/3)}"' ljust
+ }
+}
+.PE
diff --git a/graphics/circuit_macros/doc/Capture.JPG b/graphics/circuit_macros/doc/Capture.JPG
deleted file mode 100644
index 8819dece9c..0000000000
--- a/graphics/circuit_macros/doc/Capture.JPG
+++ /dev/null
Binary files differ
diff --git a/graphics/circuit_macros/doc/CctTable.tex b/graphics/circuit_macros/doc/CctTable.tex
deleted file mode 100644
index ee442a4f3b..0000000000
--- a/graphics/circuit_macros/doc/CctTable.tex
+++ /dev/null
@@ -1,858 +0,0 @@
-\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/CctTableMan.m4 b/graphics/circuit_macros/doc/CctTableMan.m4
deleted file mode 100644
index 221c62b737..0000000000
--- a/graphics/circuit_macros/doc/CctTableMan.m4
+++ /dev/null
@@ -1,92 +0,0 @@
-.PS
-# `CctTable.m4'
-cct_init
-
-movewid = 2 pt__
-hm = 2.05
-vm = 0.28
-{ {resistor ; move ;"`{\tt resistor}'" ljust}
- move right_ hm
- {resistor(,,Q) ; move ;"`\tt resistor(,{,}Q) '" ljust}
- move right_ hm
- {resistor(,,E) ; move
- "`\shortstack[l]{\tt resistor(,{,}E)\\ {\tt $\equiv$ ebox}}'" ljust}
-}
- move down vm; right_
-{ {resistor(,,ES) ; move ;"`\tt resistor(,{,}ES) '" ljust}
- move right_ hm
- {resistor(,,H) ; move ;"`\tt resistor(,{,}H) '" ljust}
- move right_ hm
- {ebox(,,,0.5) ; move ;"`{\tt ebox(,{,},0.5)}'" ljust}
-}
- move down vm; right_
-{ {resistor(,,V) ; move ;"`{\tt resistor(,{,}V)}'" ljust}
- move right_ hm
- {move down_ 0.05; right_
- thermocouple ; move;"`{\tt thermocouple}'" ljust; move up_ 0.05}
- move right_ hm
- {ebox(,0.5,0.3) ; move ;"`{\tt ebox(,0.5,0.3)}'" ljust}
-}
- move down vm; right_
-{ {inductor ; move ;"`{\tt inductor}'" ljust}
- move right_ hm
- {inductor(,W); move ;"`{\tt inductor(,W)}'" ljust}
- move right_ hm
- {inductor(,L); move ;"`{\tt inductor(,L)}'" ljust}
-}
- move down vm; right_
-{ {inductor(,,,M) ; move ;"`{\tt inductor(,{,},M)}'" ljust}
- move right_ hm
- {inductor(,W,6,P); move ;"`{\tt inductor(,W,6,P)}'" ljust}
- move right_ hm
- {move right_ 0.2; ttmotor(,G) ; move ;"`{\tt ttmotor(,G)}'" ljust}
-}
- move down vm; right_
-{ {capacitor ; move ;"`{\tt capacitor}'" ljust}
- move right_ hm
- {capacitor(,C); move ;"`{\tt capacitor(,C)}'" ljust}
- move right_ hm
- {capacitor(,C+); move ;"`{\tt capacitor(,C+)}'" ljust}
-}
- move down vm; right_
-{ {capacitor(,P); move ;"`{\tt capacitor(,P)}'" ljust}
- move right_ hm
- {capacitor(,E); move ;"`{\tt capacitor(,E)}'" ljust}
- move right_ hm
- {capacitor(,K); move ;"`{\tt capacitor(,K)}'" ljust}
-}
- move down 0.25; right_
-{ {capacitor(,M); move ;"`{\tt capacitor(,M)}'" ljust}
- move right_ hm
- {capacitor(,N); move ;"`{\tt capacitor(,N)}'" ljust}
- move right_ hm
- {xtal ; move ;"`{\tt xtal}'" ljust}
-}
- move down 0.25; right_
-{ {memristor ; move;"`{\tt memristor}'" ljust}
- move right_ hm
- {heater; move;"`{\tt heater}'" ljust}
- move right_ hm
- {tline ; move;"`{\tt tline}'" ljust}
-}
- move down 0.25; right_
-{ {move up_ 0.05; right_; gap ; move ;"`{\tt gap}'" ljust}
- move right_ hm
- {gap(,,A) ; move ;"`{\tt gap(,{,}A)}'" ljust}
- move right_ hm
- {arrowline ; move;"`{\tt arrowline}'" ljust}
-}
- move down 0.25; right_
-{ {lamp ; move;"`{\tt lamp}'" ljust}
- move right_ hm
- {reed ; move ;"`{\tt reed}'" ljust}
- move right_ hm
- {reed(,,,fill_(0.9),CR) ; move ; "`{\tt reed(,{,},fill\_(0.9),CR)}'" ljust}
-}
- move down 0.25; right_
-{ {pvcell ; move;"`{\tt pvcell}'" ljust}
- move right_ hm
- {arrester ; move ;"`{\tt arrester}'" ljust}
-}
-
-.PE
diff --git a/graphics/circuit_macros/doc/Circuit_macros.bib b/graphics/circuit_macros/doc/Circuit_macros.bib
index 977060a26f..696f361fa4 100644
--- a/graphics/circuit_macros/doc/Circuit_macros.bib
+++ b/graphics/circuit_macros/doc/Circuit_macros.bib
@@ -42,6 +42,15 @@ address={Reading, Massachusetts},
publisher={Addison-Wesley},
year={1997}}
+@misc{IECstd,
+author={IEC},
+title={International Standard Database Snapshot 2007-01,
+Graphical Symbols for Diagrams},
+note={IEC-60617.},
+institution={International Electrotechnical Commission},
+address={Geneva, Switzerland},
+year={2007}}
+
@misc{IEEEstd,
author={IEEE},
title={Graphic Symbols for Electrical and Electronic Diagrams},
diff --git a/graphics/circuit_macros/doc/Circuit_macros.pdf b/graphics/circuit_macros/doc/Circuit_macros.pdf
index a9c34834ce..a6b0c06f86 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/Circuit_macros.tex b/graphics/circuit_macros/doc/Circuit_macros.tex
index fcd9e09fa6..10f8d34107 100644
--- a/graphics/circuit_macros/doc/Circuit_macros.tex
+++ b/graphics/circuit_macros/doc/Circuit_macros.tex
@@ -70,20 +70,25 @@
citecolor=purple}
\begin{document}
+%\pagenumbering{roman}
\title{M4 Macros for Electric Circuit Diagrams in \LaTeX\ Documents}
\author{Dwight Aplevich}
\enlargethispage{\baselineskip}
\date{%
-%\input Version
+%\input Version%
+%\footnote{This document is best displayed with a reader that shows bookmarks.}
\vspace*{-\baselineskip}
}
\maketitle
-% \pdfbookmark[section]{\contentsname}{toc}
- \pdfbookmark[section]{Contents}{toc}
+ \pdfbookmark[section]{\contentsname}{toc}
+% \pdfbookmark[section]{Contents}{toc}
\begin{multicols}{2}
\tableofcontents
\end{multicols}
+%\pagebreak
+%\pagenumbering{arabic}
+
\input body
%\pdfbookmark[section]{\refname}{refs}
diff --git a/graphics/circuit_macros/doc/InductorsMan.m4 b/graphics/circuit_macros/doc/InductorsMan.m4
new file mode 100644
index 0000000000..f250a81135
--- /dev/null
+++ b/graphics/circuit_macros/doc/InductorsMan.m4
@@ -0,0 +1,47 @@
+.PS
+# inductors.m4
+cct_init
+iflatex(command "{\tt")
+
+movewid = 2 pt__
+hm = 2.05
+vm = 0.4
+{ {I: inductor ; move ;"`{inductor}'" ljust}
+ move right_ hm
+ {inductor(,W); move ;"`{inductor(,W)}'" ljust}
+ move right_ hm
+ {inductor(,L); move ;"`{inductor(,L)}'" ljust}
+}
+
+ move down vm; right_
+{ {inductor(,,3,M) ; move ;"`{...(,,3,M)}'" ljust}
+ move right_ hm
+ {inductor(,W,6,P1); variable; move
+ "`...(,W,6,P1);'" ljust "`variable'" ljust}
+ move right_ hm
+ {inductor(,L,9,K); move ;"`{...(,L,9,K)}'" ljust}
+}
+
+ move down vm; right_
+{ {inductor(,,,M3); addtaps(-,1/2,-dimen_/6); move; `"...(,{,},M3)"' ljust
+ {`"addtaps(-,1/2,-dimen\_/6)"' ljust at (I.start,last ""+(0,-0.2)) }
+ }
+ move right_ hm
+ {ebox(,,,0) ; move ;"`{ebox(,{,},0)}'" ljust}
+ move right_ hm -10bp__
+ {TI: tapped(`ebox(,,,0)',-,1/4,-dimen_/6,3/4,-dimen_/6) ; move ;
+ "`tapped(\char96{}ebox(,{,},0)\char39,'" ljust at Here+(10bp__,-5bp__) \
+ "-,1/4,-dimen\_/6," ljust "3/4,-dimen\_/6)" ljust
+ "\sl Tap1" at TI.Tap1 rjust below
+ "\sl Tap2" at TI.Tap2 ljust below }
+}
+
+ move down vm*5/4; right_
+{ {shielded(`inductor(,,,M)') ; move
+ `"shielded("' ljust `"\char96inductor(,{,},M)\char39)"' ljust
+ move to (3rd last line.start,Here)
+ shielded(`ebox(,,,0)',R) ; move; `"shielded(`ebox(,{,},0)',R)"' ljust }
+}
+
+iflatex(command "}")
+.PE
diff --git a/graphics/circuit_macros/doc/Makefile b/graphics/circuit_macros/doc/Makefile
index 1abd51504e..3cdac7062e 100644
--- a/graphics/circuit_macros/doc/Makefile
+++ b/graphics/circuit_macros/doc/Makefile
@@ -8,19 +8,21 @@ PICTEX = \
ACsymbol.tex \
AmpTableMan.tex AntennasMan.tex ArrestersMan.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 \
+ CapacitorsMan.tex Composite.tex ConfigA.tex ConfigB.tex \
+ ConfigC.tex ConnMan.tex Corners.tex ContactMan.tex ContactsMan.tex \
Dac.tex Darlington.tex DCsymbol.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 \
+ GroundsMan.tex HeadersMan.tex HybridPi.tex InductorsMan.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 \
+ Potentiometers.tex RelayMan.tex relaycoilMan.tex ResistorsMan.tex \
+ Series.tex ShiftRMan.tex Sinus.tex SourcesMan.tex SwitchesMan.tex \
+ Taps.tex TgateMan.tex Thermal.tex Tline.tex \
+ VariableMan.tex WindingsMan.tex Workflow.tex XformMan.tex \
+ bitr.tex bi_trans.tex bistableMan.tex \
currents.tex eboxdims.tex fbfilter.tex fetMan.tex lrarrows.tex \
- mplex.tex oax.tex quick.tex \
+ MoreTableMan.tex mplex.tex opampex.tex quick.tex \
sampleIC.tex stringdims.tex thyristorMan.tex ujtMan.tex \
woodchips.tex
@@ -39,7 +41,7 @@ M4 = m4
# For gpic
MODE = gpic
-PIC = gpic -t
+PIC = pic -t
PRE =
POST = ;printf '\\centerline{\\box\\graph}\n'
PST =
@@ -122,7 +124,7 @@ heading.tex:
printf '\\usepackage{multicol}\n' >> heading.tex
printf '\\usepackage{amssymb,boxdims}\n' >> heading.tex $(PST)
-oax.tex tran.tex bitr.tex: oax.m4
+opampex.tex tran.tex bitr.tex: opampex.m4
$(M4) $(M4LIBS) $*.m4 > $*.pic
$(PIC) $*.pic > $*.tex
diff --git a/graphics/circuit_macros/doc/MoreTableMan.m4 b/graphics/circuit_macros/doc/MoreTableMan.m4
new file mode 100644
index 0000000000..bfc41113c1
--- /dev/null
+++ b/graphics/circuit_macros/doc/MoreTableMan.m4
@@ -0,0 +1,36 @@
+.PS
+# MoreTable.m4
+cct_init
+
+movewid = 2 pt__
+hm = 2.05
+vm = 0.28
+{ {memristor ; move;"`{\tt memristor}'" ljust}
+ move right_ hm
+ {heater; move;"`{\tt heater}'" ljust}
+ move right_ hm
+ {tline ; move;"`{\tt tline}'" ljust}
+}
+ move down 0.25; right_
+{ {pvcell ; move;"`{\tt pvcell}'" ljust}
+ move right_ hm
+ {reed ; move ;"`{\tt reed}'" ljust}
+ move right_ hm
+ {reed(,,,fill_(0.9),CR) ; move ; "`{\tt reed(,{,},fill\_(0.9),CR)}'" ljust}
+}
+ move down 0.25; right_
+{ {gap ; move ;"`{\tt gap}'" ljust}
+ move right_ hm
+ {gap(,,A) ; move ;"`{\tt gap(,{,}A)}'" ljust}
+ move right_ hm
+ {arrowline ; move;"`{\tt arrowline}'" ljust}
+}
+ move down 0.25; right_
+{ move down 0.10; right; {lamp ; move;"`{\tt lamp}'" ljust}
+ move right_ hm
+ {thermocouple ; move;"`{\tt thermocouple}'" ljust }
+# move up 0.10 right_ hm
+# {arrester ; move ;"`{\tt arrester}'" ljust}
+}
+
+.PE
diff --git a/graphics/circuit_macros/doc/Oblique.m4 b/graphics/circuit_macros/doc/Oblique.m4
index c8dfd5fa7a..08ec60c6cb 100644
--- a/graphics/circuit_macros/doc/Oblique.m4
+++ b/graphics/circuit_macros/doc/Oblique.m4
@@ -10,13 +10,13 @@ T:dot(at Ct+(0,elen_))
inductor(from T to Ct); dlabel(0.12,-0.1,,,L_1)
Point_(-30); inductor(from Cr to Cr+vec_(elen_,0))
- dlabel(0,-0.07,,L_3,)
+ dlabel(0,-0.1,,L_3,)
R:dot
L:dot( at Cl-(R.x-Cr.x,Cr.y-R.y) )
inductor(from L to Cl); dlabel(0,-0.12,,L_2,)
right_; resistor(from L to R); rlabel(,R_2,)
- resistor(from T to R); dlabel(0,0.15,,R_3,) ; b_current(y,ljust)
+ resistor(from T to R); dlabel(0,0.15,,R_3,) ; b_current(\;y,ljust)
line from L to 0.2<L,T>
source(to 0.5 between L and T); dlabel(sourcerad_+0.07,0.1,-,,+)
dlabel(0,sourcerad_+0.07,,u,)
diff --git a/graphics/circuit_macros/doc/ResistorsMan.m4 b/graphics/circuit_macros/doc/ResistorsMan.m4
new file mode 100644
index 0000000000..2b1d1515e8
--- /dev/null
+++ b/graphics/circuit_macros/doc/ResistorsMan.m4
@@ -0,0 +1,30 @@
+.PS
+# ResistorsMan.m4
+cct_init
+
+movewid = 2 pt__
+hm = 2.05
+vm = 0.28
+{ {resistor ; move ;"`{\tt resistor}'" ljust}
+ move right_ hm
+ {resistor(,,Q) ; move ;"`\tt resistor(,{,}Q) '" ljust}
+ move right_ hm
+ {resistor(,,E) ; move
+ "`\shortstack[l]{\tt resistor(,{,}E)\\ {\tt $\equiv$ ebox}}'" ljust}
+}
+ move down vm; right_
+{ {resistor(,,ES) ; move ;"`\tt resistor(,{,}ES) '" ljust}
+ move right_ hm
+ {resistor(,,H) ; move ;"`\tt resistor(,{,}H) '" ljust}
+ move right_ hm
+ {ebox(,,,0.9) ; move ;"`{\tt ebox(,{,},0.9)}'" ljust}
+}
+ move down vm; right_
+{ {resistor(,,V) ; move ;"`{\tt resistor(,{,}V)}'" ljust}
+ move right_ hm
+ {ebox(,0.5,0.3) ; move ;"`{\tt ebox(,0.5,0.3)}'" ljust}
+ move right_ hm+4bp__
+ {resistor(,,B) ; move movewid-4bp__ ;"`{\tt resistor(,{,}B)}'" ljust}
+}
+
+.PE
diff --git a/graphics/circuit_macros/doc/SourcesMan.m4 b/graphics/circuit_macros/doc/SourcesMan.m4
index 8a4bab9bc6..8e82b3f832 100644
--- a/graphics/circuit_macros/doc/SourcesMan.m4
+++ b/graphics/circuit_macros/doc/SourcesMan.m4
@@ -16,7 +16,7 @@ define(`NL',`; move down $1; right_')
{source(,i) ; move ; "`source(,i)'" ljust} NL
{source(,V) ; move ; "`source(,V)'" ljust} NL
{source(,v) ; move ; "`source(,v)'" ljust} NL
- {source(,SC) ; move ; "`source(,SC)'" ljust} NL
+ {source(,S) ; move ; "`source(,S)'" ljust} NL
{source(,AC); move ; "`source(,AC)'" ljust} NL
{source(,X) ; move ; "`source(,X)'" ljust} NL
{source(,F) ; move ; "`source(,F)'" ljust} NL
@@ -31,7 +31,7 @@ define(`NL',`; move down $1; right_')
{source(,U) ; move ; "`source(,U)'" ljust} NL
{source(,H) ; move ; "`source(,H)'" ljust} NL
{source(,R) ; move ; "`source(,R)'" ljust} NL
- {source(,S) ; move ; "`source(,S)'" ljust} NL
+ {source(,SC) ; move ; "`source(,SC)'" ljust} NL
{source(,SCr) ; move ; "`source(,SCr)'" ljust} NL
{source(,T) ; move ; "`source(,T)'" ljust} NL
{source(,L) ; move ; "`source(,L)'" ljust} NL
@@ -51,7 +51,8 @@ define(`NL',`; move down $1; right_')
{consource(,V) ; move ; "`consource(,V)'" ljust} NL(0.32)
{consource(,v) ; move ; "`consource(,v)'" ljust} NL(0.3)
{battery ; move ; "`battery'" ljust} NL(0.3)
- {battery(,3,R) ; move ; "`battery(,3,R)'" ljust}
+ {battery(,3,R) ; move ; "`battery(,3,R)'" ljust} NL(0.35)
+ {ttmotor(,G) ; move ; "`ttmotor(,G)'" ljust}
iflatex(`ifpsfrag(,`latexcommand(})')')
.PE
diff --git a/graphics/circuit_macros/doc/SwitchesMan.m4 b/graphics/circuit_macros/doc/SwitchesMan.m4
index 46b3f9240d..e7d82badab 100644
--- a/graphics/circuit_macros/doc/SwitchesMan.m4
+++ b/graphics/circuit_macros/doc/SwitchesMan.m4
@@ -20,7 +20,7 @@ movewid = 0.25
lswitch(,,uDC); {"\tt (,{,}uDC)" at (last [],S)}
}
# Row 2
- move down; right_; {
+ move down 0.4; right_; {
lswitch(,,K); {S:"\tt (,{,}K)" Below}
move right_
lswitch(,,KD); {"\tt (,{,}KD)" at (last [],S)}
@@ -60,7 +60,7 @@ movewid = 0.25
dswitch(,,WBCo); {"\tt (,{,}WBCo)" at (last [],S)}
}
# Row 4
- move down; right_; {
+ move down 0.4; right_; {
dswitch(,,WBKCo); {S: "\tt (,{,}WBKCo)" Below}
move right_
dswitch(,,WBCb); {"\tt (,{,}WBCb)" at (last [],S)}
@@ -74,7 +74,8 @@ movewid = 0.25
dswitch(,,WBFSd); {"\tt (,{,}WBFSd)" at (last [],S)}
}
# Row 5
- move down moveht*5/4; right_; {
+# move down moveht*5/4; right_; {
+ move down moveht; right_; {
dswitch(,,WBTh); {S: "\tt (,{,}WBTh)" Below}
move right_
dswitch(,,WBKC); {"\tt (,{,}WBKC)" at (last [],S)}
@@ -102,20 +103,7 @@ movewid = 0.25
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_; {
+ move down 0.4; right_; {
dswitch(,,WBMMR); {S: "\tt (,{,}WBMMR)" Below}
move right_
dswitch(,,WBMM); {"\tt (,{,}WBMM)" at (last [],S)}
@@ -128,4 +116,17 @@ movewid = 0.25
move right_
dswitch(,,WBoKEL); {"\tt (,{,}WBoKEL)" at (last [],S)}
}
+# Row 8
+ 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}
+ }
.PE
diff --git a/graphics/circuit_macros/doc/VariableMan.m4 b/graphics/circuit_macros/doc/VariableMan.m4
index e52e30913d..dfe43d8028 100644
--- a/graphics/circuit_macros/doc/VariableMan.m4
+++ b/graphics/circuit_macros/doc/VariableMan.m4
@@ -1,19 +1,19 @@
.PS
-# `Variable.m4'
+# `VariableMan.m4'
cct_init
-define(`elen_',dimen_); down_
-[ { 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
+define(`elen_',dimen_); up_
+[ { variable(`resistor(up_ dimen_)',A) };
+ {"A" at last line.start below}; move right
+ { variable(`resistor',N) }; {"N" at last line.start below}; move right
+ { variable(`resistor',uN) }; {"uN" at last line.start below}; move right
+ { variable(`resistor',NN) }; {"NN" at last line.start below}; move right
+ { variable(`resistor',uNN) }; {"uNN" at last line.start below}; #; move right
]
[
skp = 0.4
hskip = linewid*0.5
cskip = hskip
-Orig: Here
{ move right cskip+elen_+hskip
line invis right_ elen_ "\tt C"; move right_ hskip
line invis right_ elen_ "\tt S" }
@@ -25,4 +25,5 @@ Orig: Here
variable(`capacitor(,C)',char`'S) }',
A,P,L,N)
] with .w at last [].e+(0.4,0)
+
.PE
diff --git a/graphics/circuit_macros/doc/Version.tex b/graphics/circuit_macros/doc/Version.tex
index ccce7cfa86..fb5fc7b97e 100644
--- a/graphics/circuit_macros/doc/Version.tex
+++ b/graphics/circuit_macros/doc/Version.tex
@@ -1 +1 @@
-Version 9.5
+Version 9.6
diff --git a/graphics/circuit_macros/doc/body.tex b/graphics/circuit_macros/doc/body.tex
index 0afb23e5be..0fd36ecb5c 100644
--- a/graphics/circuit_macros/doc/body.tex
+++ b/graphics/circuit_macros/doc/body.tex
@@ -48,15 +48,13 @@
%
\xection{Introduction\label{Introduction:}}
\begin{quotation}\noindent
-% Before every conference, I find Ph.D.s in on weekends running back
-% and forth from their offices to the printer.
It appears that people
who are unable to execute pretty pictures with pen and paper find it
gratifying to try with a computer~\cite{Landauer95}.
\end{quotation}
-This manual\footnote{%
-This document is best displayed with a reader that shows bookmarks.}
+This manual%
+\footnote{This document is best displayed with a reader that shows bookmarks.}
describes a method for drawing electric circuits and
other diagrams in \latex and web documents.
The diagrams are defined in the simple \pic drawing language~\cite{KRpic}
@@ -69,8 +67,8 @@ with ordinary text input. The book from which the above quotation
is taken correctly points out that the payoff can be in quality of
diagrams at the price of the time spent in learning how to draw them.
-A collection of basic components, most based on IEEE
-standards~\cite{IEEEstd},
+A collection of basic components, most based on IEC and IEEE
+standards~\cite{IECstd,IEEEstd},
and conventions for their internal
structure are described. Macros such as these are only a starting
point, since it is often convenient to customize elements or to package
@@ -204,8 +202,6 @@ produce {\sl file}{\tt.ps},
which can be printed or viewed using {\tt gsview}, for example.
For \TPGF,
Invoking PDFlatex on the source produces {\tt .pdf} output directly.
-%Whether or not the figure environment is used,
-%the essential line in all cases is \verb|\input quick|.
The essential line is \verb|\input quick| whether or not the figure
environment is used.
@@ -301,9 +297,34 @@ the commands for producing the {\tt .tex} file can be reduced
\verb%m4 quick.m4 | dpic -p > quick.tex%
+\enlargethispage{\baselineskip}
+\item
+You can put several diagrams into a single source file.
+Make each diagram the body of a \latex macro, as shown:
+
+\par
+\verb|\newcommand{\diaA}{%|\NVL
+\verb|.PS|\NVL
+{\sl drawing commands}\NVL
+\verb|.PE|\NVL
+\verb|\box\graph }% \box\graph not required for dpic|\NVL
+\verb|\newcommand{\diaB}{%|\NVL
+\verb|.PS|\NVL
+{\sl drawing commands}\NVL
+\verb|.PE|\NVL
+\verb|\box\graph }% \box\graph not required for dpic|\NVL
+Produce a {\tt .tex} file as usual,
+insert the {\tt .tex} into the \latex source, and
+invoke the macros \verb^\diaA^ and \verb^\diaB^ at the appropriate places.
+
\item
-It may be desirable to invoke \Mfour and \dpic automatically from the
-document file as shown:
+%Whether this and the next item rightly belong under the heading
+%``Simplifications'' might be debated. They appear most useful
+%when a project-management tool is employed.
+In some circumstances,
+it may be desirable to invoke \Mfour and \dpic automatically from the
+document. Define a macro \verb|\mtotex| as shown in the
+following example:
{\tt \verb^\documentclass{article}^ \brtt
\verb^\usepackage{tikz}^ \brtt
@@ -322,7 +343,7 @@ The first argument of \verb|\mtotex| is a {\tt p} for pstricks or
Sources \verb|FileA.m4| and \verb|FileB.m4| must contain any required
\verb|include| statements,
and the main document should be processed using
-the latex or pdflatex option \verb|-shell-escape|.
+the latex or pdflatex option \verb|--shell-escape|.
If the {\tt M4PATH} environment variable is not set then insert
{\tt -I }{\sl installdir} after {\tt m4} in the command definition,
where {\sl installdir} is the absolute path to the installation directory.
@@ -333,24 +354,24 @@ A derivative of this method that allows the insertion of
\pic code into a \Tikz picture is described in \SR{Tikzwithpic:}.
\item
-You can put several diagrams into a single source file.
-Make each diagram the body of a \latex macro, as shown:
+It might be convenient for the source of small diagrams to be part
+of the document source text. The {\tt filecontents} environment of current
+\LaTeX\ allows this; older versions can employ a now-obsolete package
+{\tt filecontents.sty}. The following example
+for processing by {\tt pdflatex} \verb|--shell-escape|
+first writes the \Mfour\ source
+to file {\tt sample.m4}, invokes \verb|\mtotex| on it, and reads in the result:
\par
-\verb|\newcommand{\diaA}{%|\NVL
-\verb|.PS|\NVL
-{\sl drawing commands}\NVL
-\verb|.PE|\NVL
-\verb|\box\graph }% \box\graph not required for dpic|\NVL
-\verb|\newcommand{\diaB}{%|\NVL
+\verb|\begin{filecontents}[overwrite,noheader,nosearch]{sample.m4}|\NVL
+\verb|include(pgf.m4)|\NVL
\verb|.PS|\NVL
-{\sl drawing commands}\NVL
+\verb|cct_init|\NVL
+{\sl drawing commands} $\ldots$\NVL
\verb|.PE|\NVL
-\verb|\box\graph }% \box\graph not required for dpic|\NVL
-Produce a {\tt .tex} file using \verb|\mtotex|
-or \Mfour and \dpic or \gpic,
-insert the {\tt .tex} into the \latex source, and
-invoke the macros \verb^\diaA^ and \verb^\diaB^ at the appropriate places.
+\verb|\end{filecontents}|\NVL
+\verb|\mtotex{g}{sample}|\NVL
+\verb|\input{sample.tex}|\NVL
\end{enumerate}
\subsection{Including the libraries\label{Libraries:}}
@@ -394,7 +415,7 @@ begin with the characters {\tt m4}.
\xection{\Pic essentials\label{Pic:}}
-\Pic source is a sequence of lines in a file.
+\Pic source is a sequence of lines in a text file.
The first line of a diagram begins with {\tt .PS} with optional following
arguments, and the last line is normally {\tt .PE}.
Lines outside of these pass through the \pic processor unchanged.
@@ -406,7 +427,9 @@ The visible objects can be divided conveniently into two classes, the
The object {\tt move} is linear but draws nothing. A compound object,
or {\tt block,} is planar and consists of a pair of square brackets enclosing
other objects, as described in \SR{Compoundobjects:}.
-Objects can be placed using absolute coordinates or relative to other objects.
+
+Objects can be placed using absolute coordinates or,
+as is often better, relative to other objects.
\Pic allows the definition of real-valued variables, which are alphameric
names beginning with lower-case letters, and computations using them.
@@ -829,18 +852,21 @@ 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}.
-to~\REF{Arresters}.
+The two-terminal elements are shown in
+\FRS{Resistors}
+to~\REF{Switches} and part of~\FR{Arresters}.
Several elements are included more than once to illustrate
-some of their arguments, which are listed in \SR{defines}.
-\enlargethispage{\baselineskip}
+some of their arguments, which are listed in detail in \SR{defines}.
+\FR{Resistors} shows some resistors with typical variants.
\begin{figure}[h!]
- \input CctTableMan
-% \ifpdf\vspace*{-\baselineskip}\fi%
- \caption{Basic two-terminal elements, showing some variations.}
- \label{CctTable}
+ \input ResistorsMan
+ \caption{Resistors dawn by the macro
+ {\tt resistor({\sl linespec, n}|E, {\sl chars}, {\sl cycle wid})}.
+ The second argument is either an integer to specify number of cycles,
+ the letter {\tt E}, or blank. The third argument specifies the desired
+ variant.
+ The default {\tt ebox} element designates a resistor.}
+ \label{Resistors}
\end{figure}
The first macro argument specifies
@@ -849,13 +875,7 @@ 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}[ht]
- \input AmpTableMan
- \caption{Amplifier, delay, and integrator.}
- \label{AmpTable}
- \end{figure}
-\pagebreak
Thus, for example,
\par
{\tt resistor(up\_ 1.25,7)}
@@ -866,60 +886,82 @@ vertices per side.
The macro {\tt up\_} evaluates to {\tt up} but also resets the current
directional parameters to point up.
-\begin{figure}[ht]
+\pagebreak
+Capacitors are illustrated in \FR{Capacitors}.
+See \SR{Composite:} for the {\tt variable} macro.
+\begin{figure}[h!t]
+ \input CapacitorsMan
+ \caption{The {\tt capacitor({\sl linespec, chars,} [R],{\sl height, width})}
+ macro, and an example application of the {\tt variable} macro.}
+ \label{Capacitors}
+ \end{figure}
+
+Basic inductors are illustrated in \FR{Inductors}.
+\begin{figure}[h!]
+ \input InductorsMan
+ \caption{Basic inductors created with the
+ {\tt inductor({\sl linespec,} W|L, {\sl cycles,} M|P|K, {\sl loop wid})}
+ macro, the {\tt ebox} macro for European-style inductors, and some
+ modifications (see also \SR{Composite:}).
+ When an embellished element is repeated several times,
+ writing a wrapper macro may be desirable.}
+ \label{Inductors}
+ \end{figure}
+
+Some more basic elements are in \FR{MoreTable}, and amplifiers in \FR{AmpTable}.
+\begin{figure}[h!t]
+ \input MoreTableMan
+ \caption{More two-terminal elements.}
+ \label{MoreTable}
+ \end{figure}
+\begin{figure}[h!t]
+ \input AmpTableMan
+ \caption{Amplifier, delay, and integrator.}
+ \label{AmpTable}
+ \end{figure}
+
+\FR{Sources} shows sources, many of which contain internal symbols,
+and of which the {\tt AC} and {\tt S} options illustrate the need
+to draw a single cycle of a sinusoid or approximate sinusoid.
+\begin{figure}[h!t]
\input SourcesMan
-% \ifpdf\vspace*{-0.5\baselineskip}\fi%
\caption{Sources and source-like elements.}
\label{Sources}
\end{figure}
-
-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
-(\input{ACsymbol.tex}) to an ebox:
+``\input{ACsymbol.tex}'' to an ebox:
\par
{\tt ebox; $\lbrace$\ ACsymbol(at last [],{,},dimen\_/8) $\rbrace$}
\noindent
For direct current (\input{DCsymbol.tex}), there is also
-{\tt DCsymbol(at {\sl position, length, height,} U|D|L|R|{\sl degrees})}.
+{\tt DCsymbol(at {\sl position, length, height,} U|D|L|R|{\sl degrees})},
+and for power-system diagrams, macros
+{\tt Deltasymbol(at {\sl position, keys,} U|D|L|R|{\sl degrees})},
+and
+{\tt Ysymbol(at {\sl position, keys,} U|D|L|R|{\sl degrees})},
-\begin{figure}[ht]
+\pagebreak
+Diodes and fuses are shown in \FRS{Diodes} and \REF{Fuses}.
+\begin{figure}[h!]
\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!]
+\begin{figure}[h!]
\input FusesMan
\caption{Variations of the macros
{\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 SwitchesMan
- \caption{The
- {\tt switch(\linespec,L|R,{\sl chars},L|B|D)}
- macro is a wrapper for the macros
- {\tt lswitch(\linespec,[L|R],[O|C][D][K][A])},
- {\tt bswitch(\linespec,[L|R],[O|C])},
- and the many-optioned
- {\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.
- The separately defined macros {\tt Proxim} and {\tt Magn}
- embellish switches in the second-last row.}
- \label{Switches}
- \end{figure}
+\enlargethispage{\baselineskip}%
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
@@ -931,10 +973,7 @@ The first argument of the macro
\par
\noindent
is the name of a two-terminal element in quotes, followed by the
-element arguments. The element is drawn with reversed direction.
-
-\pagebreak
-Thus,
+element arguments. The element is drawn with reversed direction; thus,
\par
{\tt diode(right\_ 0.4); reversed(`diode',right\_ 0.4)}
\par
@@ -955,31 +994,17 @@ by 1.8, for example
{\tt resized(1.8,`diode',right\_ 0.4);}
{\tt resized(1.8,`reversed',`diode',right\_ 0.4)}
-\pagebreak
-\FR{Arresters} shows a collection of surge-protection devices, or arresters,
-of which the {\tt E} and {\tt S} types may be either 2-terminal or as
-3-terminal (composite) elements described in \SR{Composite:}.
-\begin{figure}[ht]
- \input ArrestersMan
- \caption{Variations of the {\tt arrester({\sl linespec, chars,}
- {\sl wid}[{\tt :}{\sl arrowhead ht}], {\sl ht}[{\tt :}{\sl arrowhead wid})}
- macro. Putting {\tt D} in argument 2 for the {\tt S} or {\tt E}
- configuration creates a 3-terminal composite element
- with terminals {\sl A, B}, and {\sl G.}}
- \label{Arresters}
- \end{figure}
-
\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
-\begin{figure}[ht]
+\begin{figure}[h!]
\input EmarrowsMan
\caption{Radiation arrows: {\tt em\_arrows({\sl type, angle, length})}}
\label{Emarrows}
\end{figure}
+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
@@ -989,10 +1014,43 @@ at 45 degrees, for example:
{\tt define(`myLED',`diode(`\$1'); em\_arrows(N,45)
with .Tail at last [].ne')}
+\enlargethispage{\baselineskip}
+Switches with numerous controls are in \FR{Switches}.
+\begin{figure}[h!]
+ \input SwitchesMan
+ \caption{The
+ {\tt switch(\linespec,L|R,{\sl chars},L|B|D)}
+ macro is a wrapper for the macros
+ {\tt lswitch(\linespec,[L|R],[O|C][D][K][A])},
+ {\tt bswitch(\linespec,[L|R],[O|C])},
+ and the many-optioned
+ {\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.
+ The separately defined macros {\tt Proxim} and {\tt Magn}
+ embellish switches in the second-last row.}
+ \label{Switches}
+ \end{figure}
+
+\FR{Arresters} shows a collection of surge-protection devices, or arresters,
+of which the {\tt E} and {\tt S} types may be either 2-terminal or as
+3-terminal (composite) elements described in \SR{Composite:}.
+\begin{figure}[h!]
+ \input ArrestersMan
+ \caption{Variations of the {\tt arrester({\sl linespec, chars,}
+ {\sl wid}[{\tt :}{\sl arrowhead ht}],
+ {\sl ht}[{\tt :}{\sl arrowhead wid}])}
+ macro. Putting {\tt D} in argument 2 for the {\tt S} or {\tt E}
+ configuration creates a 3-terminal composite element
+ with terminals {\sl A, B}, and {\sl G.}}
+ \label{Arresters}
+ \end{figure}
+
\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})},
+{\tt variable(`}{\sl element}{\tt',{\sl type},[+|-]{\sl angle},{\sl length})},
\noindent
where {\sl type} is one of {\tt A, P, L, N, NN} with {\tt C} or {\tt S}
@@ -1000,21 +1058,23 @@ 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}:
+thus, the following line draws the third resistor in \FR{Variable}:
\par
- {\tt resistor(down\_ dimen\_); variable(,uN)}
+ {\tt resistor(up\_ dimen\_); variable(,uN)}
\begin{figure}[ht]
\vspace*{-\baselineskip}
\input VariableMan
\caption{Illustrating
{\tt variable(`{\sl element}',%
-[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.}
+[A|P|L|[u]N]|[u]NN]][C|S],[+|-]{\sl angle},{\sl length})}.
+ For example, {\tt variable(`resistor(up\_ dimen\_)',A)} draws
+ the leftmost resistor shown above.
+ The default angle is 45${}^{\circ}$, regardless of the direction of
+ the element, but the angle preceded by a sign ($+$ or $-$) is taken
+ to be relative to the drawing direction of the element as for the
+ lower right capacitor in \FR{Capacitors}, for example. The array on
+ the right shows the effect of the second argument.}
\label{Variable}
\end{figure}
@@ -1026,8 +1086,16 @@ 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}.
+\begin{figure}[ht]
+% \ifpdf\vspace*{-0.5\baselineskip}\fi%
+ \input currents
+ \caption{Illustrating {\tt b\_current, larrow,} and {\tt rarrow}.
+ The drawing direction is to the right.}
+ \label{currents}
+ \end{figure}
The macro
{\tt b\_current({\sl label,} above\_|below\_, In|O[ut], Start|E[nd],
@@ -1036,13 +1104,6 @@ The macro
\noindent
draws an arrow from the start of the last-drawn two-terminal element
{\sl frac} of the way toward the body.
-\begin{figure}[ht]
-% \ifpdf\vspace*{-0.5\baselineskip}\fi%
- \input currents
- \caption{Illustrating {\tt b\_current, larrow,} and {\tt rarrow}.
- The drawing direction is to the right.}
- \label{currents}
- \end{figure}
If the fourth argument is {\tt End}, the arrow is drawn from the end
toward the body.
@@ -1068,7 +1129,16 @@ quote, in which case the argument is copied literally. The third argument
specifies the separation from the element.
\subsection{Labels\label{Labels:}}
- Special macros for labeling two-terminal elements are included:
+ Arbitrary labels
+ can be positioned by any \pic\ placement method including the
+ representative basic examples shown:
+
+ {\tt "}{\sl text}{\tt" at {\sl position}}\NVL
+ {\tt "}{\sl text}{\tt" at {\sl position} above}\NVL
+ {\tt "}{\sl text}{\tt" wid {\sl width} ht {\sl height}
+ with .sw at {\sl position}}\NVL
+
+ In addition, special macros for labeling two-terminal elements are available:
\par
{\tt
llabel(} {\sl arg1,arg2,arg3} {\tt )
@@ -1085,6 +1155,14 @@ current direction:} {\tt up, down, left, right.}
The second places the arguments along the centre, and the third along the
right side.
A simple circuit example with labels is shown in \FR{Loop}.
+\begin{figure}[h!t]
+ \vspace*{-\baselineskip}
+ \parbox{4in}{\small \verbatiminput{Loop.m4}}%
+ \hfill\raise-0.5in\hbox{\input Loop }
+ \vspace*{-\baselineskip}
+ \caption{A loop containing labeled elements, with its source code.}
+ \label{Loop}
+ \end{figure}
The macro {\tt dlabel} performs these functions for an
obliquely drawn element, placing the three macro arguments at
{\tt vec\_(-long,lat),} {\tt vec\_(0,lat),} and {\tt vec\_(long,lat)}
@@ -1097,25 +1175,11 @@ Labels beginning
with {\tt sprintf} or a double quote are copied literally rather than
assumed to be in math mode.
- Arbitrary \latex including {\bsl\tt includegraphics,} for example,
- can also be placed on a diagram using
-
- {\tt "}{\sl \latex text}{\tt" wid {\sl width} ht {\sl height}
- at {\sl position}}
-
-\begin{figure}[ht]
- \vspace*{-\baselineskip}
- \parbox{4in}{\small \verbatiminput{Loop.m4}}%
- \hfill\raise-0.5in\hbox{\input Loop }
- \vspace*{-\baselineskip}
- \caption{A loop containing labeled elements, with its source code.}
- \label{Loop}
- \end{figure}
-
\xection{Placing two-terminal elements\label{Placing:}}
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:
+are defined by a straight-line segment, so
+four numbers or equivalent
+are required to place the element as in the following example:
\par
{\tt resistor(from (1,1) to (2,1))}.
@@ -1143,8 +1207,8 @@ To draw a resistor up $d$ units from the current position, for example:
{\tt resistor(up\_ d)}
\Pic stores the current drawing direction,
-the latter unfortunately limited to {\tt up, down, left, right,}
-which is assumed when necessary.
+which is unfortunately limited to {\tt up, down, left, right,}
+for reference when necessary.
The circuit macros need to know the current direction, so
whenever {\tt up, down, left, right} are used they should be written
respectively as the macros {\tt up\_, down\_, left\_, right\_} as in
@@ -1152,8 +1216,9 @@ the above example.
To allow drawing circuit objects in other than the standard four directions,
a transformation matrix
-is applied at the macro level to generate the required \pic code.
-Potentially, the matrix can be used for other transformations.
+is applied at the macro level to generate the required
+(but sometimes very elaborate) \pic code.
+Potentially, the matrix elements can be used for other transformations.
The macro
{\tt setdir\_({\sl direction, default direction})}
@@ -1178,7 +1243,7 @@ The macro {\tt eleminit\_} in the two-terminal elements invokes
to establish element length and direction.
As shown in \FR{Oblique},
-\begin{figure}[ht]
+\begin{figure}[h!t]
\vspace{-\baselineskip}
\parbox{4.5in}{\small \verbatiminput{Oblique.m4}}%
\hfill\raise-0.7in\llap{\hbox{\input Oblique }}%
@@ -1208,6 +1273,7 @@ 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>.}
+\pagebreak
\subsection{Series and parallel circuits\label{Seriesandparallel:}}
To draw elements in series, each element can be placed by specifying
@@ -1321,6 +1387,7 @@ to determine length and direction (but not position) of the block.
Nearly all elements drawn within blocks can be customized by adding an
extra argument, which is executed as the last item within the block.
+\pagebreak
The macro {\tt
potentiometer(\linespec,{\sl cycles},{\sl fractional pos},{\sl length},
@@ -1363,7 +1430,7 @@ drawn elements.
A few composite symbols derived from two-terminal elements
are shown in \FR{Composite}.
-\begin{figure}[h!b]
+\begin{figure}[ht]
\vspace*{-0.5ex}
% \vspace*{-\baselineskip}
\input Composite
@@ -1373,7 +1440,7 @@ are shown in \FR{Composite}.
\label{Composite}
\end{figure}
-\enlargethispage{\baselineskip}
+%\enlargethispage{\baselineskip}
The ground symbol is shown in \FR{Grounds}.
The first argument specifies position; for example, the two lines shown
have identical effect:
@@ -1442,14 +1509,14 @@ The {\tt opamp} labels can be rotated if necessary by
using postprocessor commands (for example \PSTricks \verb|\rput|)
as second and third arguments.
-The code in \FR{oax} places an opamp with three connections.
+The code in \FR{opampex} places an opamp with three connections.
\begin{figure}[h!b]
- \parbox{4in}{\small \verbatiminput{oaxbody.m4}}%
- \quad\raise-0.2in\hbox{\input oax }%
+ \parbox{4in}{\small \verbatiminput{opampexbody.m4}}%
+ \quad\raise-0.2in\hbox{\input opampex }%
% \vspace{-\baselineskip}
\caption{A code fragment invoking the
{\tt opamp(\linespec,-,+,{\sl size},[R][P])} macro.}
- \label{oax}
+ \label{opampex}
\end{figure}
\FR{Xform} shows variants of the transformer macro,
@@ -1587,8 +1654,8 @@ For drawing relays, the macro
{\tt relaycoil({\sl chars, wid, ht,} {\tt U|D|L|R|}{\sl degrees})}
shown in \FR{relaycoil} provides a choice of connection points and
actuator types.
-
\pagebreak
+
\begin{figure}[ht]
% \ifpdf\vspace*{-\baselineskip}\else\vspace*{-0.5\baselineskip}\fi%
\input relaycoilMan
@@ -1611,7 +1678,7 @@ terminals {\sl P$_i$, C$_i$, O$_i$.}
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!]
+\begin{figure}[!ht]
\input JackMan
\vspace{-1ex}
\caption{The {\tt jack(U|D|L|R|{\sl degrees}, {\sl chars})}
@@ -1635,27 +1702,22 @@ 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}[ht]
-% \ifpdf\vspace*{-0.5\baselineskip}\fi%
+\begin{figure}[h!b]
\input HeadersMan
-% \ifpdf{\vspace*{-0.5ex}}\fi%
\caption{Macro {\tt Header(1|2, {\sl rows, wid, ht, type})}.}
\label{Headers}
\end{figure}
-\begin{figure}[ht]
+\begin{figure}[h!b]
\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%
\end{figure}
+
\begin{figure}[ht]
-% \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,7 +1727,7 @@ for width and height.
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!b]
+\begin{figure}[h!t]
\ifpdf{\vspace*{-1ex}}\fi%
\input NPDTMan
\caption{Multipole double-throw switches drawn by
@@ -1678,7 +1740,7 @@ 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!b]
+\begin{figure}[h!t]
\vspace*{-\baselineskip}%
% \ifpdf\vspace*{-2\baselineskip}\else \vspace{-\baselineskip}\fi
\input WindingsMan
@@ -1690,6 +1752,7 @@ is first drawn and then blanked in appropriate places using the background
\label{Windings}
\end{figure}
+\pagebreak
\subsection{Semiconductors\label{Semiconductors:}}%
\FR{Bip} shows the variants of bipolar transistor macro
{\tt bi\_tr(\linespec,L|R,P,E)}
@@ -1697,9 +1760,7 @@ which contains predefined internal locations {\sl E},
{\sl B}, {\sl C}.
The first argument defines the distance and direction from {\sl E}
\begin{figure}[ht]
-% \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}
@@ -1711,7 +1772,7 @@ current drawing direction according to the second argument. Setting the third
argument to {\tt P} creates a PNP device instead of NPN, and setting the
fourth to {\tt E} draws an envelope around the device.
\FR{Darlington} shows a composite macro with several optional internal elements.
-\begin{figure}[ht]
+\begin{figure}[h!t]
\input Darlington
\caption{Macro {\tt Darlington(L|R,[E][P][B1][E1|R1][E2|R2][D][Z])},
drawing direction {\tt up\_}.}
@@ -1720,8 +1781,7 @@ fourth to {\tt E} draws an envelope around the device.
The code fragment example in \FR{bitr} places a bipolar transistor,
connects a ground to the emitter, and connects a resistor to the collector.
-\begin{figure}[ht]
-%\vspace*{-\baselineskip}
+\begin{figure}[h!t]
\quad\quad\parbox{4in}{\small \verbatiminput{bitrbody.m4}}%
\quad\raise-0.4in\hbox{\input bitr }%
\vspace{-\baselineskip}
@@ -1734,8 +1794,7 @@ the macro {\tt bi\_trans(\linespec, L|R, {\sl chars}, E)}, which
draws the components of the transistor according to the characters in its
third argument. For example, multiple emitters and collectors can be
specified as shown in \FR{bitrans}.
-\begin{figure}[ht]
-%\vspace*{-0.5\baselineskip}
+\begin{figure}[h!t]
\input bi_trans
\caption{The {\tt bi\_trans(\linespec,L|R,{\sl chars},E)} macro.
The sub-elements are specified by the third argument. The substring
@@ -1744,21 +1803,21 @@ specified as shown in \FR{bitrans}.
\label{bitrans}
\end{figure}
-\pagebreak
A UJT macro with predefined internal locations {\sl B1,} {\sl B2,}
-and {\sl E} is shown in \FR{ujt},
-and a thyristor macro with predefined internal locations
- {\sl G} and {\sl T1,} {\sl T2,} or
- {\sl A,} {\sl K} is in \FR{thyristor}.
-Except for the {\sl G} terminal, a thyristor (the {\tt IEC} variant excluded)
-\begin{figure}[ht]
+and {\sl E} is shown in \FR{ujt}.
+\begin{figure}[h!t]
% \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]
+
+A thyristor macro with predefined internal locations
+ {\sl G} and {\sl T1,} {\sl T2,} or
+ {\sl A,} {\sl K} is in \FR{thyristor}.
+Except for the {\sl G} terminal, a thyristor (the {\tt IEC} variant excluded)
+\begin{figure}[h!b]
% \ifpdf\vspace*{-\baselineskip}\else\vspace*{-0.5\baselineskip}\fi%
\input thyristorMan
\vspace*{-1ex}
@@ -1770,7 +1829,7 @@ Except for the {\sl G} terminal, a thyristor (the {\tt IEC} variant excluded)
to the second argument to draw open arrowheads.}
\label{thyristor}
\end{figure}
-is much like an two-terminal element. The wrapper macro
+is much like a two-terminal element. The wrapper macro
{\tt scr({\sl linespec, chars, label})} and similar macros
{\tt scs, sus,} and {\tt sbs} place thyristors
using {\sl linespec} as for a two-terminal element,
@@ -1782,18 +1841,17 @@ but require a third argument for the label for the compound block; thus,
draws the element from position {\sl A} to position {\sl B} with label
{\sl Q3}, and draws a line from {\sl G}.
+\enlargethispage{\baselineskip}
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}[ht]
-% \ifpdf\vspace*{-\baselineskip}\fi%
\input fetMan
-% \ifpdf\vspace*{-\baselineskip}\fi%
\caption{JFET, insulated-gate enhancement and depletion MOSFETs,
- and simplified versions.
+ simplified versions, graphene, and ferroelectric fets.
These macros are wrappers that invoke the {\tt mosfet}
macro as shown in the middle and bottom rows.
- The two lower-right examples show custom devices, the first
+ The bottom-row examples show custom devices, the first
defined by omitting the substrate connection, and the second
defined using a wrapper macro.}
\label{fet}
@@ -1823,7 +1881,7 @@ the {\tt thyristor(\linespec, {\sl chars})} macro illustrated in
\FR{thyristor} is derived from the diode and bipolar transistor macros.
Another example is the {\tt tgate} macro shown in \FR{Tgate}, which
also shows a pass transistor.
-\begin{figure}[ht]
+\begin{figure}[h!t]
% \ifpdf\vspace*{-\baselineskip}\fi%
\input TgateMan
\caption{The {\tt tgate({\sl linespec,} [B][R|L])} element, derived from
@@ -1835,13 +1893,12 @@ 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}[ht]
+\begin{figure}[h!t]
\input bistableMan
% \vspace{-1ex}
\caption{Bipolar transistor circuit, illustrating {\tt crossover}
@@ -1873,6 +1930,8 @@ A macro is also provided for colored fills:
\noindent%
These macros depend heavily on the postprocessor and are intended only for
\PSTricks, \TPGF, \MetaPost, \SVG, and the Postscript or PDF output of \dpic.
+Basic \Pic\ objects are probably best colored and filled as discussed
+in \SR{Planarobjects:}.
\xection{Corners\label{Corners:}}%
If two straight lines meet at an angle then, depending on the postprocessor,
@@ -1898,6 +1957,7 @@ by half the line thickness (macro {\tt hlth}) as shown on the upper row
of the figure,
or a two-segment line can be overlaid at the corner to produce the same effect.
+\pagebreak
\xection{Looping\label{Looping:}}
Sequential actions can be performed using either the
\dpic command
@@ -1941,6 +2001,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!]
+ \vspace*{-0.5\baselineskip}
\input LogicMan
\caption{Basic logic gates. The input and output locations of
a three-input NOR gate are shown. Inputs are negated by
@@ -1961,13 +2022,15 @@ regardless of gate orientation, as in \FR{FF}.
\caption{$SR$ flip-flop.}
\label{FF}
\end{figure}
-\begin{figure}[ht]
+Beyond a default number (6) of inputs, the
+gates are given wings as in \FR{exVIII}.
+\begin{figure}[h!t]
\input mplex
+ \vspace*{-0.5\baselineskip}
\caption{Eight-input multiplexer, showing a gate with wings.}
\label{exVIII}
\end{figure}
-Beyond a default number (6) of inputs, the
-gates are given wings as in \FR{exVIII}.
+
Negated inputs or outputs are marked by circles drawn using the
\verb|NOT_circle| macro. The name marks the point at the outer edge of the
circle and the circle itself has the same name prefixed by~{\tt N\_}.
@@ -2035,7 +2098,8 @@ 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}[ht]
+\begin{figure}[h!t]
+ \vspace*{-\baselineskip}
\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
@@ -2071,7 +2135,6 @@ 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.
Optional argument 7 is the pin length in drawing units.
-\pagebreak
\FR{Multiplexer} shows a multiplexer block with variations, and
\FR{Demultiplexer} shows
the very similar demultiplexer.
@@ -2087,6 +2150,7 @@ the very similar demultiplexer.
[L][B|H|X][N[$n$]|S[$n$]][[N]OE],{\sl wid},{\sl ht})} macro.}
\label{Demultiplexer}
\end{figure}
+\pagebreak
Customized gates can be defined simply.
For example, the following code defines the custom flipflops in \FR{ShiftR}.
@@ -2104,7 +2168,6 @@ This definition makes use of macros \verb|L_unit| and
There are three pins on the right; the centre pin is null and
the bottom is null if the first macro argument is 1.
-\pagebreak
For hybrid applications, the \verb|dac| and \verb|adc| macros are
illustrated in \FR{Dac}.
The figure shows the default and predefined internal locations, the number
@@ -2175,7 +2238,8 @@ to change the size of a complete diagram while keeping the relative
proportions of objects within it. You may wish to change the sizes or
proportions of individual elements within a diagram. You must take
into account that line widths are scaled separately from drawn objects,
-and that the size of typeset text is independent of the \pic language.
+and that the size of typeset text is independent of the \pic language
+except when svg is being produced.
The scaling of circuit elements will be described first, then
the \pic scaling facilities.
@@ -2287,7 +2351,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}
+%\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,
@@ -2326,7 +2390,7 @@ two macros are defined to simplify the repeated drawing
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!]
+\begin{figure}[h!t]
% \ifpdf\vspace*{-\baselineskip}\fi%
\input Tline
\caption{A lumped model of a transmission line, illustrating the
@@ -2336,10 +2400,17 @@ a subcircuit that is replicated several times to generate \FR{Tline}.
\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.
+\FR{HybridPi} shows an element that is composed of several basic
+elements and that can be drawn in any direction prespecified by
+{\tt Point\_({\sl degrees})}. The labels 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
@@ -2379,15 +2450,7 @@ define(`hybrid_PI_BJT',
`"$\mathrm{r_o}$"' at Ro.c+vec_(hunit/4,0)
`$2' ] ')
\end{verbatim}
-\begin{figure}[ht]
- \vspace*{-0.5ex}
- \input HybridPi
- \vspace*{-0.5ex}
- \caption{A composite element containing several basic elements}
- \label{HybridPi}
- \end{figure}
-%\enlargethispage{\baselineskip}
\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,
@@ -2534,6 +2597,73 @@ placed by specifying the position of one of its defined points; by
default it will be placed as if it were a box.
\fi
+\subsection{Macro arguments\label{Marcroarguments:}}
+Macro parameters are defined
+by entering them into specific arguments, and if an argument is blank then
+a default parameter is used.
+For the resistor macro, for example:
+
+{\tt resistor( {\sl linespec, cycles, chars, cycle wid} );}
+
+\noindent
+an integer (3, say) in the second argument specifies the number of cycles.
+Arguments could be entered in a key--value style (for example,
+{\tt resistor(up\_ elen\_,style=N;cycles=8}) instead of by positional
+parameters, but it was decided early on
+to keep macro usage as close as possible to \pic\ conventions.
+
+More recently, a mixed style has been adopted by which some
+parameters are entered using keys. Two macros assist this process,
+of which the first is
+
+{\tt setkey\_({\sl string, key, default value, }[N])}
+
+The first argument
+is taken to be a sequence of semicolon (;)-separated terms of the form
+{\tt key={\sl value};}.
+Then for example in a macro, the line
+
+{\tt setkey\_( `\$2', wdth, dimen\_*2 )}
+
+\noindent
+checks argument 2 for a term {\tt wdth=}{\sl value} and defines
+the macro {\tt m4wdth} to evaluate to
+{\tt (dimen\_*2)} if not found,
+otherwise to {\tt ({\sl value}).}
+The enclosing parentheses are omitted if the
+third argument of {\tt setkey\_} is {\tt N,} as may be required if {\tt m4wdth}
+is non-numeric.
+
+In addition, the macro
+
+{\tt setkeys\_({\sl string, keysequence})}
+
+\noindent
+applies {\tt setkey\_()} multiple times to its {\sl keysequence}
+(second) argument.
+Each term of the second argument consists of the three
+arguments of {\tt setkey\_} separated by the colons (:) rather than commas.
+
+For example, consider the elementary example of a custom box macro:
+
+\begin{verbatim}
+define(`custombox',
+`setkeys_(`$1',wdth:boxwid:; hgt:boxht:; label::N; text::N)
+ ifelse(m4label,,,m4label:) box wid m4wdth ht m4hgt "m4text" ')
+\end{verbatim}
+
+Then {\tt custombox(wdth=2; label=B1; text=Hello)}
+first causes the macros {\tt m4wdth, m4hgt, m4label,} and {\tt m4text}
+to be created, with values {\tt (2), (boxht), B1,} and {\tt Hello}
+respectively, and {\tt custombox} evaluates to
+
+{\tt B1:\ box wid (2) ht (boxht) "Hello"}.
+
+The key prefix {\tt m4} of the automatically created parameter macros can be
+redefined if necessary, since it is given in the distribution by the line
+{\tt define(`key\_prefix',`m4')}.
+
+
\xection{Interaction with \latex\label{Interaction:}}
The sizes of typeset labels and other \tex boxes are generally unknown
prior to processing the diagram by \latex.
@@ -2553,12 +2683,13 @@ B: box
The \pic interpreter cannot know the size of the text to the left
and right of the box, and the diagram is generated using
-default text values. One solution to this problem is to measure the
+default text size values. One solution to this problem is to measure the
text sizes by hand and include them literally, thus:\hfill\break
\hbox{}\quad%
\verb|"Left text" wid 38.47pt__ ht 7pt__ at B.w rjust|\hfill\break
but this is tedious.
+%\enlargethispage{\baselineskip}
Often, a better solution is to process the diagram twice. The
diagram source is processed as usual by \Mfour and a \pic processor, and the
main document source is \latex{}ed to input the diagram and format the
@@ -2579,7 +2710,7 @@ This hackery is summarized below, with an example in \FR{stringdim}.
The argument of {\tt s\_box} need not be text exclusively; it can
be anything that produces a \TeX\ box, for example, \verb|\includegraphics|.
\end{itemize}
-\begin{figure}[ht]
+\begin{figure}[h!t]
\parbox{3.5in}{\small\tt.PS\\
gen\_init\\
sinclude(Circuit\_macros.dim)\\
@@ -2589,10 +2720,10 @@ This hackery is summarized below, with an example in \FR{stringdim}.
\hbox{}\quad s\_box(Right text: \$x\^{}{\%g}\$,2) at B.e ljust\\
.PE}%
\hfill\llap{\raise-0.25in\hbox{\input stringdims }}%
- \caption{The macro {\tt s\_box} sets string dimensions automatically
+ \caption{Macro {\tt s\_box} sets string dimensions automatically
when processed twice. If two or more arguments are
given to {\tt s\_box}, they
- are passed through {\tt sprintf}. The dots show the figure bounding box.}
+ are passed through {\tt sprintf}. The bounding box is shown.}
\label{stringdim}
\end{figure}
@@ -2669,7 +2800,6 @@ for the second time:
Here is a second small example. Suppose that the file {\tt tsbox.m4} contains
the following:
-\pagebreak
\begin{verbatim}
\documentclass{article}
\usepackage{boxdims,ifpstricks(pstricks,tikz)}
@@ -2690,7 +2820,7 @@ The file is processed twice as follows:
The first command line produces a file {\tt tsbox.pdf} with
incorrect bounding box. The second command reads the data in {\tt tsbox.dim}
to size the label correctly. The equivalent pstricks commands (note
-the {\tt ifpstricks} macro in the second source line) are
+the {\tt ifpstricks} macro in the second line of the diagram source) are
{\tt m4 pstricks.m4 tsbox.m4 | dpic -p > tsbox.tex; latex tsbox}
\par
@@ -2889,7 +3019,7 @@ 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 or equivalent.
-\begin{figure}[h!b]
+\begin{figure}[h!t]
% \ifpdf\vspace*{-\baselineskip}\fi%
\input Workflow
% \ifpdf\vspace*{-\baselineskip}\fi%
@@ -2944,61 +3074,63 @@ that includes the diagram using
\verb|\includegraphics{|{\sl filename}\verb|.mps}|
as usual.
-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.
+The \dpic processor can generate 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.
\xection{Developer's notes\label{Developersnotes:}}
Years ago in the course of writing a book, I took a few days off to
-write a \pic-like interpreter (\dpic) to automate the tedious
-coordinate calculations required by \latex picture objects. The
-macros in this distribution and the interpreter are the result of that
-effort, drawings I have had to produce since, and suggestions received from
-others. The interpreter has been upgraded over time to generate
-\mfpic, \MetaPost~\cite{metapost}, raw \Postscript, \Postscript with
-{\tt psfrag} tags, raw PDF, \PSTricks, and
-Ti{\it k}Z PGF output, the latter two my preference
-because of their quality and flexibility, including facilities for colour
-and rotations, together with simple font selection.
+write a \pic-like interpreter (\dpic) to automate the tedious coordinate
+calculations required by \latex picture objects. The macros in this
+distribution and the interpreter are the result of that effort, drawings
+I have had to produce since, and suggestions received from others.
+The interpreter has been upgraded over time to generate \mfpic,
+\MetaPost~\cite{metapost}, raw \Postscript, \Postscript with {\tt
+psfrag} tags, raw PDF, \PSTricks, and Ti{\it k}Z PGF output, the latter
+two my preference because of their quality and flexibility, including
+facilities for colour and rotations, together with simple font selection.
\Xfig{}-compatible output was introduced early on to allow the creation of
-diagrams both by programming and by interactive graphics.
-\SVG output was added relatively recently, and seems suitable for
-producing web diagrams directly and for further editing by the
-Inkscape interactive graphics editor. The latest addition
-is raw PDF output, which has very basic text capability and is most
-suitable for creating diagrams without labels, but on which sophisticated
-text can be overlaid. \Dpic can write the coordinates of selected
-locations to an external file to be used in overlaying text or other
-items on the diagram.
-
-Instead of using \pic macros, I preferred the equally simple
-but more powerful \Mfour macro processor, and therefore \Mfour is
-required here, although \dpic now supports \pic-like macros. Free
-versions of \Mfour are available for Unix, Windows, and other
-operating systems.
+diagrams both by programming and by interactive graphics. \SVG output
+was added relatively recently, and seems suitable for producing web
+diagrams directly and for further editing by the Inkscape interactive
+graphics editor. The latest addition is raw PDF output, which has very
+basic text capability and is most suitable for creating diagrams without
+labels, but on which sophisticated text can be overlaid if necessary.
+\Dpic can write the coordinates of selected locations to an external
+file to be used in overlaying text or other items on the diagram.
+
+The main value of this distribution is not intended to be in the use
+of a specific language but in the element data encoded in the macros,
+which have been developed with reference to standards and refined over
+more than two decades, and which now total thousands of lines. Some of
+the macros have become less readable as more options and flexibility
+have been added, and if starting over today, perhaps I would change
+some details. Compromises have been made in order to retain reasonable
+compatibility with the variety of postprocessors. No choice of tool
+is without compromise, and producing good graphics seems to be time
+consuming, no matter how it is done, especially for circuits or other
+diagrams that contain random detail.
+
+Instead of using \pic macros, I preferred the equally simple but more
+powerful \Mfour macro processor, and therefore \Mfour is required here,
+although \dpic now supports \pic-like macros.
+% One way of viewing macro
+% preprocessing is to suggest that \Mfour is to the \pic language as the C
+% preprocessor is to the C language.
+Free versions of \Mfour are available
+for Unix and its descendents, Windows, and other operating systems.
If starting over today would I not just use one of the other drawing
-packages available these days? It would depend on the context, but
-\pic remains a good choice for line drawings because it is easy to learn
+packages available these days? It would depend on the context, but \pic
+remains a good choice for line drawings because it is easy to learn
and read but powerful enough for coding the geometrical calculations
required for precise component sizing and placement. It would be nice
if arbitrary rotations and scaling were simpler and if a general path
-element with clipping were available as in \Postscript. However, all the
-power of \Postscript or \TPGF, for example, remains available,
+element with clipping were available as in \Postscript. However,
+all the power of \Postscript or \TPGF, for example, remains available,
as arbitrary postprocessor code can be included with \pic code.
-The main value of this distribution is not in the use of a specific
-language but in the element data encoded in the macros, which have been
-developed with reference to standards and refined over two decades.
-Some of them have become less readable as more options and flexibility
-have been added, and if starting over today, perhaps I would change
-some details. Compromises have been made in order to retain reasonable
-compatibility with the variety of postprocessors. No choice of tool
-is without compromise, and producing good graphics seems to be time
-consuming, no matter how it is done, especially for circuits
-or other diagrams that contain random detail.
-
The \dpic interpreter has several output-format options that may be
useful. The {\tt eepicemu} and {\tt pict2e} extensions of the
primitive \latex picture objects are supported. The \mfpic output
@@ -3021,7 +3153,6 @@ With raw \Postscript, \PDF, and \SVG output, the user is
responsible for ensuring that the correct fonts are provided and for
formatting the text.
-\pagebreak
Many thanks to the people who continue to send comments, questions,
and, occasionally, bug fixes. What began as a tool for my own use changed
into a hobby that has persisted, thanks to your help and advice.
@@ -3030,10 +3161,6 @@ into a hobby that has persisted, thanks to your help and advice.
This section provides hints and a list of common errors.
The distributed macros are not written for maximum robustness.
-Arguments could be entered in a key--value style (for example, {\tt
-resistor(up\_ elen\_,style=N;cycles=8}) instead of by positional
-parameters, but it was decided early on
-to keep macro usage as close as possible to \pic\ conventions.
Macro arguments could be tested for correctness and
explanatory error messages could be written as necessary, but that
would make the macros more difficult to read and to write. You will
@@ -3041,7 +3168,7 @@ have to read them when unexpected results are obtained or when you wish
to modify them.
Maintaining reasonable compatibility with both \gpic\ and \dpic
-and, especially, for different postprocessors, has
+and, especially, with different postprocessors, has
resulted in some macros becoming more complicated than is preferable.
Here are some hints, gleaned from experience and from comments I have
@@ -3087,7 +3214,7 @@ received.
\item
\bflistitem{Initialization}{initialization}
If the first element macro evaluated is not two-terminal or is within a
-\Pic block, then later macros evaluated outside the block may produce
+\Pic\ block, then later macros evaluated outside the block may produce
the error message
{\tt there is no variable `rp\_ang'}
@@ -3157,8 +3284,8 @@ If information is omitted, default values are used. Writing
{\tt source(up\_)}
-\noindent draws a source up a distance equal to the current
-{\tt lineht} value, which may cause confusion.
+\noindent draws a source from the current position up a distance equal
+to the current {\tt lineht} value, which may cause confusion.
Writing
{\tt source(0.5)}
diff --git a/graphics/circuit_macros/doc/currents.m4 b/graphics/circuit_macros/doc/currents.m4
index 5b2e20fa54..74b5702654 100644
--- a/graphics/circuit_macros/doc/currents.m4
+++ b/graphics/circuit_macros/doc/currents.m4
@@ -17,7 +17,7 @@ cct_init
{"\tt $\ldots$(i,below\_,O)" at last line + (0,-0.20)}
}
- move down_ 0.60
+ move down_ 0.50
{right_
resistor; b_current(i,,,E)
{"\tt b\_current(i,{,},E)" wid 1.2 at last line + (0,-0.20)}
@@ -32,7 +32,7 @@ cct_init
{"\tt $\ldots$(i,below\_,O,E)" at last line + (0,-0.20)}
}
- move down_ 0.60
+ move down_ 0.55
{right_
del = 0.55
inductor; larrow(i)
diff --git a/graphics/circuit_macros/doc/defines.tex b/graphics/circuit_macros/doc/defines.tex
index fdc1f85c35..da19a5fcf0 100644
--- a/graphics/circuit_macros/doc/defines.tex
+++ b/graphics/circuit_macros/doc/defines.tex
@@ -38,7 +38,7 @@
\noindent
\LR{A} \LR{B} \LR{C} \LR{D} \LR{E} \LR{F} \LR{G} \LR{H} \LR{I} \LR{J}
\LR{K} \LR{L} \LR{M} \LR{N} \LR{O} \LR{P}
-\LR{R} \LR{S} \LR{T} \LR{U} \LR{V} \LR{W} \LR{X}
+\LR{R} \LR{S} \LR{T} \LR{U} \LR{V} \LR{W} \LR{X} \LR{Y}
\\
\Letter{A}%
@@ -122,11 +122,11 @@
{gen}
{arc with acute angle (obtuse if radius is negative), drawn in a [ ] block}
\macrodef{ArcAngle}{ArcAngle}{({\sl position, position, position, radius,
- modifiers}) }
+ modifiers, label}) }
{gen}
{Arc angle symbol drawn ccw at arg2. Arg4 is the radius from arg2;
- arg5 contains line attributes, e.g., {\tt thick linethick/2}}
-
+ arg5 contains line attributes, e.g., {\tt thick linethick/2 ->};
+ arg6 is an optional label at mid-arc}
\macrodef{arcd}{arcd}{({\sl center},
{\sl radius},{\sl start degrees},{\sl end degrees}) }
{gen}
@@ -191,6 +191,9 @@
{Draw the tree for a gate as in the {\tt Autologix} macro. No inputs
or external connections are drawn. The names of the internal gate
inputs are stacked in {\tt `AutoInNames'}}
+\macrodef{assign3}{assign3}{({\sl var name,var name,var name,arg4,arg5,arg6})}
+ {gen}
+ {Assigns \$1 = arg4 if \$1 is nonblank; similarly \$2 = arg5 and \$3 = arg6}
\macrodef{Autologix}{Autologix}%
{({\sl Boolean function sequence},%
[N[oconnect]][L[eftinputs]][R][V][M][;offset={\sl value}]}
@@ -321,22 +324,27 @@
{buzzer, {\sl In1} to {\sl In3} defined, C=curved
\seesect{Composite:}}
\Letter{C}%
-\macrodef{c\_fet}{c_fet}{(\linespec,L|R,P)}
+\macrodef{c\_fet}{c_fet}{(\linespec,R,P)}
{cct}
{left or right, plain or negated pin simplified MOSFET}
-\macrodef{capacitor}{capacitor}{(\linespec,{\sl char}[+[L]],R,
+\macrodef{capacitor}{capacitor}{(\linespec,{\sl chars},R,
{\sl height}, {\sl wid})}
{cct}
- {capacitor, {\sl char}: F or none=flat plate, C=curved-plate,
- E=polarized boxed plates,
- K=filled boxed plates,
- M=unfilled boxes,
- M=one rectangular plate,
- P=alternate polarized; + adds a polarity sign;
+ {capacitor, {\sl chars}:
+ F or blank=flat plate;
+ dF flat plate with hatched fill;
+ C=curved-plate;
+ dC=curved-plate with variability arrowhead;
+ E=polarized boxed plates;
+ K=filled boxed plates;
+ M=unfilled boxes;
+ M=one rectangular plate;
+ P=alternate polarized;
+ + adds a polarity sign;
+L polarity sign to the left of drawing direction;
- arg3: R=reversed polarity,
+ arg3: R=reversed polarity;
arg4 = height (defaults F: {\tt dimen\_}$/3$,
- C,P: {\tt dimen\_}$/4$, E,K: {\tt dimen\_}$/5$)
+ C,P: {\tt dimen\_}$/4$, E,K: {\tt dimen\_}$/5$);
arg5 = wid (defaults F: {\sl height}*0.3,
C,P: {\sl height}*0.4, E,K: {\sl height}) \seesect{Twoterminal:}}
\macrodef{cbreaker}{cbreaker}{(\linespec,L|R,D|Th|TS)}
@@ -358,9 +366,17 @@
{gen}
{Upper (lower if arg5={\tt R}) intersection of circles at
{\sl Pos1} and {\sl Pos2}, radius {\sl rad1} and {\sl rad2}}
-\macrodef{clabel}{clabel}{({\sl label},{\sl label},{\sl label})}
- {cct}
- {centre triple label \seesect{Labels:}}
+\macrodef{clabel}{clabel}{({\sl label},{\sl label},{\sl label},{\sl arg4},%
+ {\sl arg5})}
+ {cct}
+ {Triple label along the drawing axis of an element in the current
+ direction \seesect{Labels:}. Labels are placed at the beginning,
+ centre, or end of the last {\tt []} block (or a named {\tt []}
+ block). The labels are treated as math, but copied literally if
+ in double quotes or defined by sprintf. {\sl Arg4} can be {\tt
+ above,} {\tt below,} {\tt left,} or {\tt right} to supplement the
+ default position. {\sl Arg5} is the optional name of a {\tt []}
+ block to be labelled and is {\tt last []} by default}
\macrodef{cm\_\_}{cm__}{}
{gen}
{absolute centiimetres}
@@ -433,10 +449,9 @@
{cct}
{controlled-source width}
\Letter{D}%
-\macrodef{d\_fet}{d_fet}{(\linespec,L|R,P,S,E|S)}
+\macrodef{d\_fet}{d_fet}{(\linespec,R,P,E|S)}
{cct}
- {left or right, N or P depletion MOSFET, normal or simplified,
- without or with envelope or thick channel
+ {left or right, N or P depletion MOSFET, envelope or simplified
\seesect{Semiconductors:}}
\macrodef{dabove}{dabove}{(at {\sl location})}
{darrow}
@@ -536,6 +551,11 @@
\macrodef{deleminit\_}{deleminit_}{}
{darrow}
{sets drawing direction for dlines}
+\macrodef{Deltasymbol}{Deltasymbol}{(at {\sl position},keys,
+ U|D|L|R|{\sl degrees}) (default {\tt U} for up)}
+ {cct}
+ {Delta symbol for power-system diagrams.
+ {\sl keys:} {\tt size={\sl expression}}}
\macrodef{Demux}{Demux}{({\sl n},{\sl label},
{\tt [L][B|H|X][N[{\sl n}]|S[{\sl n}]][[N]OE],
{\sl wid},{\sl ht}})}
@@ -591,6 +611,18 @@ B|CR|D|G|L|LE[R]|P[R]|S|Sh|T|V|v|w|Z|chars,%
{\tt Z}=zener;
appending {\tt K} to arg 2 draws open arrowheads;
arg 3: {\tt R}=reversed polarity, {\tt E}=enclosure \seesect{Twoterminal:}}
+%\macrodef{DIP}{DIP}{({\sl pin count, attributes})}%
+% {log}
+% {Dual in-line package diagram. Default pin count = 8.
+% Arg2 ({\sl attributes})= semicolon-separated list of optional terms:
+% {\tt bodywid=}{\sl expr} (default 0.25$\,$in${}={}$5{\tt *L\_unit}),
+% {\tt bodylen=}{\sl expr} (default {\sl pin count} $\times$ {\sl pin pitch}),
+% {\tt pinpitch=}{\sl expr} (default 0.1),
+% {\tt pinwid=}{\sl expr} (default 0.06),
+% {\tt pinlen=}{\sl expr} (default 0.05),
+% {\tt direct=U|D|L|R} (default {\tt U} for up),
+% {\tt type=I|Q} (default {\tt I}; Q=pins of alternating length)
+% \seesect{Logicgates:}}
\macrodef{dir\_}{dir_}{}
{darrow}
{used for temporary storage of direction by darrow macros}
@@ -714,10 +746,10 @@ B|CR|D|G|L|LE[R]|P[R]|S|Sh|T|V|v|w|Z|chars,%
\macrodef{e\_}{e_}{}
{gen}
{.e relative to current direction}
-\macrodef{e\_fet}{e_fet}{(\linespec,L|R,P,S,E|S)}
+\macrodef{e\_fet}{e_fet}{(\linespec,R,P,E|S)}
{cct}
{left or right, N or P enhancement MOSFET, normal
- or simplified, without or with envelope or thick channel
+ or simplified, without or with envelope
\seesect{Semiconductors:}}
\macrodef{earphone}{earphone}{( U|D|L|R|{\sl degrees, size})}
{cct}
@@ -766,6 +798,11 @@ B|CR|D|G|L|LE[R]|P[R]|S|Sh|T|V|v|w|Z|chars,%
{3D}
{vector projected on current view plane with top face
of 3-dimensonal arrowhead normal to x2,y2,z2 }
+\macrodef{Fe\_fet}{Fe_fet}{(\linespec,R,{\sl chars})}
+ {cct}
+ {FET with superimposed ferroelectric symbol. Args 1 to 3 are as for
+ the {\tt mosfet} macro
+ \seesect{Semiconductors:}}
\macrodef{FF\_ht}{FF_ht}{}
{cct}
{flipflop height parameter in {\tt L\_unit}s}
@@ -841,6 +878,10 @@ B|CR|D|G|L|LE[R]|P[R]|S|Sh|T|V|v|w|Z|chars,%
\macrodef{G\_hht}{G_hht}{}
{log}
{gate half-height in {\tt L\_unit}s}
+\macrodef{g\_fet}{g_fet}{(\linespec,R,P,{\sl shade spec})}
+ {cct}
+ {left or right, N or P graphene FET, without or with shading
+ \seesect{Semiconductors:}}
\macrodef{gap}{gap}{(\linespec,{\sl fill},A)}
{cct}
{gap with (filled) dots, A=chopped arrow between dots\seesect{Twoterminal:}}
@@ -972,11 +1013,14 @@ n|e|s|w,{\sl length})}
\macrodef{in\_\_}{in__}{}
{gen}
{absolute inches}
-\macrodef{inductor}{inductor}{(\linespec,W|L,{\sl n},[M|P],{\sl loop wid})}
+\macrodef{inductor}{inductor}{(\linespec, W|L, {\sl cycles}, M[n]|P[n]|K[n],
+ {\sl loop wid})}
{cct}
{inductor, arg2: narrow (default), W=wide, L=looped;
- arg3: {\sl n} arcs (default 4);
- arg4: M=magnetic core, P=powder (dashed) core,
+ arg3: number of arcs or cycles (default 4);
+ arg4: M=magnetic core, P=powder (dashed) core, K=long-dashed core,
+ n={\sl integer} (default 2) number of core lines named
+ {\sl M4Core1, M4Core2,} $\ldots$;
arg5: loop width (default L,W: {\tt dimen\_}/5; other: {\tt dimen\_}/8)
\seesect{Twoterminal:}}
\macrodef{inner\_prod}{inner_prod}{({\sl linear obj},{\sl linear obj})}
@@ -1092,9 +1136,17 @@ n|e|s|w,{\sl length})}
\macrodef{ljust\_}{ljust_}{}
{gen}
{ljust with respect to current direction}
-\macrodef{llabel}{llabel}{({\sl label},{\sl label},{\sl label})}
- {cct}
- {triple label on left side of the element \seesect{Labels:}}
+\macrodef{llabel}{llabel}{({\sl label},{\sl label},{\sl label},{\sl arg4},%
+ {\sl arg5})}
+ {cct}
+ {Triple label on the left of an element with respect to the current
+ direction \seesect{Labels:}. Labels are placed at the beginning,
+ centre, or end of the last {\tt []} block (or a named {\tt []}
+ block). The labels are treated as math, but copied literally if
+ in double quotes or defined by sprintf. {\sl Arg4} can be {\tt
+ above,} {\tt below,} {\tt left,} or {\tt right} to supplement the
+ default position. {\sl Arg5} is the optional name of a {\tt []}
+ block to be labelled and is {\tt last []} by default}
\macrodef{loc\_}{loc_}{({\sl x}, {\sl y})}
{gen}
{location adjusted for current direction}
@@ -1108,24 +1160,26 @@ n|e|s|w,{\sl length})}
\macrodef{loge}{loge}{}
{gen}
{logarithm, base $e$}
-\macrodef{Loopover\_}{Loopover_}{(`{\sl variable}',{\sl actions},{\sl value1,
+\macrodef{Loopover\_}{Loopover_}{(`{\sl variable}',{\sl actions},{\sl
+value1,
value2, $\ldots$})}
{gen}
{Repeat {\sl actions} with {\sl variable} set successively to
- {\sl value1, value2, $\ldots$}, setting macro {\tt m4Lx} to 1, 2, $\ldots$,
- terminating if {\sl variable} is nul}
+ {\sl value1, value2, $\ldots$}, setting macro {\tt m4Lx} to 1, 2,
+ $\ldots$, terminating if {\sl variable} is nul}
\macrodef{lp\_xy}{lp_xy}{}
{log}
{coordinates used by {\tt lg\_pin}}
-\macrodef{lpop}{lpop}{({\sl xcoord}, {\sl ycoord}, {\sl radius}, {\sl fill},
- {\sl zero ht})}
- {gen}
- {for lollipop graphs: filled circle with stem to (xcoord,zeroht)}
+\macrodef{lpop}{lpop}{({\sl xcoord}, {\sl ycoord}, {\sl radius},
+{\sl fill},
+ {\sl zero ht})} {gen}
+ {for lollipop graphs: filled circle with stem to
+ (xcoord,zeroht)}
\macrodef{lswitch}{lswitch}{( \linespec, L|R, {\sl chars} )}
{cct}
{knife switch R=right orientation (default L=left);
- {\sl chars}=[O{\tt|}C][D][K][A] O=opening arrow; C=closing arrow; D=dots;
- K=closed switch; A=blade arrowhead \seesect{Twoterminal:}}
+ {\sl chars}=[O{\tt|}C][D][K][A] O=opening arrow; C=closing arrow;
+ D=dots; K=closed switch; A=blade arrowhead \seesect{Twoterminal:}}
\macrodef{lt\_}{lt_}{}
{gen}
{left with respect to current direction}
@@ -1141,7 +1195,8 @@ n|e|s|w,{\sl length})}
{arrow with adjustable head, filled when possible}
\macrodef{m4dupstr}{m4dupstr}{({\sl string},{\sl n},`{\sl name}')}
{gen}
- {Defines {\sl name} as {\sl n} concatenated copies of {\sl string}.}
+ {Defines {\sl name} as {\sl n} concatenated copies of {\sl
+ string}.}
\macrodef{m4lstring}{m4lstring}{({\sl arg1},{\sl arg2})}
{gen}
{expand {\sl arg1} if it begins
@@ -1163,9 +1218,9 @@ n|e|s|w,{\sl length})}
{memristor element\seesect{Twoterminal:}}
\macrodef{microphone}{microphone}{( A|U|D|L|R|{\sl degrees, size})}
{cct}
- {microphone; if arg1 = A: upright mic, otherwise arg1 sets direction
- of standard microphone with
- {\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}
@@ -1181,33 +1236,28 @@ n|e|s|w,{\sl length})}
({\sl Position1,Position2,Position3,length,line attributes})}
{gen}
{e.g., {\tt mitre\_(A,B,C)} draws angle ABC with legs
- of length arg4 (default {\tt linethick bp\_\_/2});
- sets {\tt Here} to Position2
+ of length arg4 (default {\tt linethick bp\_\_/2}); sets {\tt Here}
+ to Position2
\seesect{Corners:}}
\macrodef{mm\_\_}{mm__}{}
{gen}
{absolute millimetres}
\macrodef{mosfet}{mosfet}{(\linespec,L|R,{\sl chars},E)}
{cct}
- {MOSFET left or right, included components defined by characters, envelope.
+ {MOSFET left or right, included components defined by characters,
+ envelope.
arg 3 chars:
- {\tt [u][d]B:} center bulk connection pin;
- {\tt D:} D pin and lead;
- {\tt E:} dashed substrate;
- {\tt F:} solid-line substrate;
- {\tt [u][d]G:} G pin to substrate at source;
- {\tt [u][d]H:} G pin to substrate at center;
- {\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;
- {\tt [u][d]S:} S pin and lead u: arrow up; d: arrow down;
- {\tt [d]T:} G pin to center of channel d: not circle;
- {\tt X:} XMOSFET terminal;
- {\tt Z:} simplified complementary MOS
+ {\tt [u][d]B:} center bulk connection pin; {\tt D:} D pin and lead;
+ {\tt E:} dashed substrate; {\tt F:} solid-line substrate; {\tt
+ [u][d]G:} G pin to substrate at source; {\tt [u][d]H:} G pin to
+ substrate at center; {\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; {\tt [u][d]S:} S pin and lead u:
+ arrow up; d: arrow down; {\tt [d]T:} G pin to center of channel
+ d: not circle; {\tt X:} XMOSFET terminal; {\tt Z:} simplified
+ complementary MOS
\seesect{Semiconductors:}}
\macrodef{Mux\_ht}{Mux_ht}{}
{cct}
@@ -1216,19 +1266,15 @@ n|e|s|w,{\sl length})}
{cct}
{Mux width parameter in {\tt L\_unit}s}
\macrodef{Mux}{Mux}{({\sl n},{\sl label},
- {\tt [L][B|H|X][N[{\sl n}]|S[{\sl n}]][[N]OE],
- {\sl wid},{\sl ht}})}
+ {\tt [L][B|H|X][N[{\sl n}]|S[{\sl n}]][[N]OE], {\sl wid},{\sl ht}})}
{log}
{binary multiplexer, $n$ inputs,
- {\tt L} reverses input pin numbers,
- {\tt B} display binary pin numbers,
- {\tt H} display hexadecimal pin numbers,
- {\tt X} do not print pin numbers,
- {\tt N[{\sl n}]} puts Sel or Sel$0$ .. Sel$n$ at the top
- (i.e., to the left of the drawing direction),
- {\tt S[{\sl n}]} puts the Sel inputs at the bottom (default)
- {\tt OE} ({\tt N=}negated) {\tt OE} pin
- \seesect{Logicgates:}}
+ {\tt L} reverses input pin numbers, {\tt B} display binary pin
+ numbers, {\tt H} display hexadecimal pin numbers, {\tt X} do not
+ print pin numbers, {\tt N[{\sl n}]} puts Sel or Sel$0$ .. Sel$n$
+ at the top (i.e., to the left of the drawing direction), {\tt
+ S[{\sl n}]} puts the Sel inputs at the bottom (default) {\tt OE}
+ ({\tt N=}negated) {\tt OE} pin \seesect{Logicgates:}}
\macrodef{Mx\_pins}{Mx_pins}{}
{log}
{max number of gate inputs without wings}
@@ -1245,23 +1291,24 @@ n|e|s|w,{\sl length})}
\macrodef{NAND\_gate}{NAND_gate}{({\sl n},N)}
{log}
{`nand' gate, 2 or {\sl n\/} inputs; N=negated input.
- Otherwise, arg1 can be a sequence of letters {\tt P|N}
- to define normal or negated inputs.
+ Otherwise, arg1 can be a sequence of letters {\tt P|N} to define
+ normal or negated inputs.
\seesect{Logicgates:}}
\macrodef{ne\_}{ne_}{}
{gen}
{.ne with respect to current direction}
\macrodef{NeedDpicTools}{NeedDpicTools}{}
{gen}
- {executes {\tt copy "HOMELIB\_/dpictools.pic"} if the file has not been read}
+ {executes {\tt copy "HOMELIB\_/dpictools.pic"} if the file has
+ not been read}
\macrodef{neg\_}{neg_}{}
{gen}
{unary negation}
\macrodef{NOR\_gate}{NOR_gate}{({\sl n},N)}
{log}
{`nor' gate, 2 or {\sl n\/} inputs; N=negated input.
- Otherwise, arg1 can be a sequence of letters {\tt P|N}
- to define normal or negated inputs.
+ Otherwise, arg1 can be a sequence of letters {\tt P|N} to define
+ normal or negated inputs.
\seesect{Logicgates:}}
\macrodef{norator}{norator}{(\linespec,{\sl width},{\sl ht})}
{cct}
@@ -1269,13 +1316,14 @@ n|e|s|w,{\sl length})}
\macrodef{NOT\_circle}{NOT_circle}{}
{log}
{`not' circle}
-\macrodef{NOT\_gate}{NOT_gate}{(\linespec,[B][N|n],{\sl wid},{\sl height})}
+\macrodef{NOT\_gate}{NOT_gate}{(\linespec,[B][N|n],{\sl wid},{\sl
+height})}
{log}
{`not' gate.
When {\sl linespec} is blank then the element is composite and In1,
- Out, C, NE, and SE are defined; otherwise the element is drawn as
- a two-terminal element. arg2: {\tt B}=box gate, {\tt N}=not circle at input
- and output, {\tt n}=not circle at input only
+ Out, C, NE, and SE are defined; otherwise the element is drawn as a
+ two-terminal element. arg2: {\tt B}=box gate, {\tt N}=not circle at
+ input and output, {\tt n}=not circle at input only
\seesect{Logicgates:}}
\macrodef{NOT\_rad}{NOT_rad}{}
{log}
@@ -1289,21 +1337,20 @@ n|e|s|w,{\sl length})}
nw,nn,ne,ns,space ratio,pin lgth,style, other commands})}
{cct}
{ Default is a standard-box twoport. Args 2 to 5 are
- the number of ports to be drawn on w, n, e, s sides.
- The port pins are named by side, number, and by a or b pin,
- e.g., W1a, W1b, W2a, $\ldots$
- Arg 6 specifies the ratio of port width to interport space (default 2),
- and arg 7 is the pin length. Set arg 8 to N to omit the dots on
- the port pins. Arguments 1 and 9 allow customizations
+ the number of ports to be drawn on w, n, e, s sides. The port pins
+ are named by side, number, and by a or b pin, e.g., W1a, W1b, W2a,
+ $\ldots$ Arg 6 specifies the ratio of port width to interport space
+ (default 2), and arg 7 is the pin length. Set arg 8 to N to omit
+ the dots on the port pins. Arguments 1 and 9 allow customizations
\seesect{Composite:}}
\macrodef{nterm}{nterm}{({\sl box spec{\tt ;}other commands,
nw,nn,ne,ns,pin lgth,style, other commands})}
{cct}
{n-terminal box macro (default three pins).
- Args 2 to 5 are the number of pins to be drawn on W, N, E, S sides.
- The pins are named by side and number, e.g. W1, W2, N1, $\ldots$
- Arg 6 is the pin length. Set arg 7 to N to omit the dots
- on the pins. Arguments 1 and 8 allow customizations, e.g.
+ Args 2 to 5 are the number of pins to be drawn on W, N, E, S
+ sides. The pins are named by side and number, e.g. W1, W2, N1,
+ $\ldots$ Arg 6 is the pin length. Set arg 7 to N to omit the
+ dots on the pins. Arguments 1 and 8 allow customizations, e.g.
{\tt nterm(,{,},{,},{,}N,"\$a\$" at Box.w ljust,"\$b\$" at Box.e rjust,
"\$c\$" at Box.s above)} }
\macrodef{nullator}{nullator}{(\linespec,{\sl width},{\sl ht})}
@@ -1315,18 +1362,20 @@ nw,nn,ne,ns,pin lgth,style, other commands})}
\macrodef{NXOR\_gate}{NXOR_gate}{({\sl n},N)}
{log}
{`nxor' gate, 2 or {\sl n\/} inputs; N=negated input.
- Otherwise, arg1 can be a sequence of letters {\tt P|N}
- to define normal or negated inputs.
+ Otherwise, arg1 can be a sequence of letters {\tt P|N} to define
+ normal or negated inputs.
\seesect{Logicgates:}}
\Letter{O}%
-\macrodef{opamp}{opamp}{(\linespec,{\sl label},{\sl label},{\sl size},{\sl
+\macrodef{opamp}{opamp}{(\linespec,{\sl label},{\sl
+label},{\sl size},{\sl
chars}, other commands)}
{cct}
{operational amplifier with $-,$ $+$ or other internal labels,
- specified size. {\sl chars:} {\tt P=} add power connections,
- {\tt R=} swap In1, In2 labels,
- {\tt T=} truncated point.
- The first and last arguments allow added customizations
+ specified size. {\sl chars:} {\tt P=} add power connections, {\tt
+ R=} swap In1, In2 labels, {\tt T=} truncated point. The internally
+ defined positions are {\sl W, N, E, S, Out, NE, SE, In, In2}, and
+ the (obsolete) positions {\sl E1 = NE, E2 = SE}. The first and last
+ arguments allow added customizations
\seesect{Composite:}}
\macrodef{open\_arrow}{open_arrow}{(\linespec,{\sl ht},{\sl wid})}
{gen}
@@ -1334,40 +1383,39 @@ nw,nn,ne,ns,pin lgth,style, other commands})}
\macrodef{OR\_gate}{OR_gate}{({\sl n},N)}
{log}
{`or' gate, 2 or {\sl n\/} inputs; N=negated input.
- Otherwise, arg1 can be a sequence of letters {\tt P|N}
- to define normal or negated inputs.
+ Otherwise, arg1 can be a sequence of letters {\tt P|N} to define
+ normal or negated inputs.
\seesect{Logicgates:}}
\macrodef{OR\_gen}{OR_gen}{($n$,{\sl chars},[{\sl wid},[{\sl ht}]])}
{log}
{general OR gate: $n$=number of inputs $(0\leq n\leq 16)$;
{\sl chars:} B=base and straight sides; A=Arcs;
- [N]NE,[N]SE,[N]I,[N]N,[N]S=inputs or circles;
- [N]P=XOR arc; [N]O=output; C=center.
- Otherwise, arg1 can be a sequence of letters {\tt P|N}
- to define normal or negated inputs.}
+ [N]NE,[N]SE,[N]I,[N]N,[N]S=inputs or circles; [N]P=XOR arc;
+ [N]O=output; C=center.
+ Otherwise, arg1 can be a sequence of letters {\tt P|N} to define
+ normal or negated inputs.}
\macrodef{OR\_rad}{OR_rad}{}
{log}
{radius of OR input face in {\tt L\_unit}s}
\Letter{P}%
-\macrodef{parallel\_}{parallel_}{(\char96{\sl elementspec}\char39,%
+\macrodef{parallel\_}{parallel_}{(\char96{\sl
+elementspec}\char39,%
\char96{\sl elementspec}\char39 $\ldots$)}
{cct}
- { Parallel combination of two-terminal elements in a {\tt [ ]} block.
- Each argument is a {\em quoted} elementspec of the form
- {\tt[Sep={\sl val};][{\sl Label}:] {\sl element}; [{\sl attributes}]}
- where an {\sl attribute} is of the form
- {\tt[llabel($\ldots$);] | [rlabel($\ldots$);] | [b\_current($\ldots$);]}.
- An argument may also be {\tt series\_($\ldots$)} or
- {\tt parallel\_($\ldots$)} {\em without} attributes or quotes.
- Sep={\sl val}; in the first branch sets the default
- separation of all branches to {\sl val}; in a later
- element Sep={\sl val}; applies only to that branch.
- An element may have normal arguments but should
- not change the drawing direction.
+ { Parallel combination of two-terminal elements in a {\tt [
+ ]} block.
+ Each argument is a {\em quoted} elementspec of the form {\tt[Sep={\sl
+ val};][{\sl Label}:] {\sl element}; [{\sl attributes}]} where
+ an {\sl attribute} is of the form {\tt[llabel($\ldots$);] |
+ [rlabel($\ldots$);] | [b\_current($\ldots$);]}. An argument may
+ also be {\tt series\_($\ldots$)} or {\tt parallel\_($\ldots$)} {\em
+ without} attributes or quotes. Sep={\sl val}; in the first branch
+ sets the default separation of all branches to {\sl val}; in a later
+ element Sep={\sl val}; applies only to that branch. An element may
+ have normal arguments but should not change the drawing direction.
\seesect{Seriesandparallel:}}
%\macrodef{par\_}{par_}{({\sl element},{\sl element},{\sl separation})}
-% {cct}
-% {two same-direction, same-length elements in parallel}
+% {cct} % {two same-direction, same-length elements in parallel}
\macrodef{proximity}{proximity}{(\sl linespec)}
{cct}
{proximity detector (= {\tt consource(,P)})}
@@ -1383,13 +1431,9 @@ nw,nn,ne,ns,pin lgth,style, other commands})}
\macrodef{pconnex}{pconnex}{(R|L|U|D|{\sl degrees},{\sl chars})}
{cct}
{power connectors, arg 1: drawing direction; {\sl chars:}
- {\tt R}=right orientation,
- {\tt M|F}= male, female,
- {\tt A|AC}=115V, 3 prong, B=box, C=circle,
- {\tt P}= PC connector,
- {\tt D}= 2-pin connector,
- {\tt G|GC}= GB 3-pin,
- {\tt J}= 110V 2-pin
+ {\tt R}=right orientation, {\tt M|F}= male, female, {\tt A|AC}=115V,
+ 3 prong, B=box, C=circle, {\tt P}= PC connector, {\tt D}= 2-pin
+ connector, {\tt G|GC}= GB 3-pin, {\tt J}= 110V 2-pin
\seesect{Composite:}}
\macrodef{pi\_}{pi_}{}
{gen}
@@ -1397,8 +1441,7 @@ nw,nn,ne,ns,pin lgth,style, other commands})}
\macrodef{plug}{plug}{(U|D|L|R|{\sl degrees},[2|3][R])}
{cct}
{arg1: drawing direction; string arg2: {\tt R} right orientation,
- {\tt 2|3} number of conductors
- \seesect{Composite:}}
+ {\tt 2|3} number of conductors \seesect{Composite:}}
\macrodef{pmod}{pmod}{({\sl integer}, {\sl integer})}
{gen}
{+ve $\hbox{mod}(M,N)$ e.g., $\hbox{\tt pmod}(-3,5)=2$}
@@ -1407,7 +1450,8 @@ nw,nn,ne,ns,pin lgth,style, other commands})}
{(radians) set direction cosines}
\macrodef{PerpTo}{PerpTo}{({\sl Pos1, Line, Point})}
{gen}
- {{\sl Point} is the label for the point on {\sl Line} of the perpendicular
+ {{\sl Point} is the label for the point on {\sl Line} of the
+ perpendicular
from {\sl Point} to {\sl Line}.}
\macrodef{Point\_}{Point_}{({\sl integer})}
{gen}
@@ -1417,22 +1461,21 @@ nw,nn,ne,ns,pin lgth,style, other commands})}
{rectangular-to polar conversion}
\macrodef{langle}{langle}{({\sl Start, End})}
{gen}
- {Angle in radians from horizontal of the line from {\sl Start} to {\sl End}.}
+ {Angle in radians from horizontal of the line from {\sl Start}
+ to {\sl End}.}
\macrodef{potentiometer}{potentiometer}{(\linespec,%
- {\sl cycles},{\sl fractional pos},{\sl length},$\cdots$)}
- {cct}
+ {\sl cycles},{\sl fractional pos},{\sl length},$\cdots$)} {cct}
{resistor with taps T1, T2, $\ldots$
- with specified fractional positions and lengths (possibly neg)
+ with specified fractional positions and lengths (possibly neg)
\seesect{Composite:}}
\macrodef{print3D}{print3D}{(x,y,z)}
- {3D}
- {write out triple for debugging}
+ {3D} {write out triple for debugging}
\macrodef{prod\_}{prod_}{({\sl a},{\sl b})}
{gen}
{binary multiplication}
\macrodef{project}{project}{({\sl x},({\sl y},({\sl z})}
- {3D}
- {3D to 2D projection onto the plane perpendicular to the view vector with
+ {3D} {3D to 2D projection onto the plane perpendicular to the view
+ vector with
angles defined by {\tt setview({\sl azim, elev})}}
\macrodef{psset\_}{psset_}{({\sl PSTricks settings})}
{gen}
@@ -1440,6 +1483,11 @@ nw,nn,ne,ns,pin lgth,style, other commands})}
\macrodef{pt\_\_}{pt__}{}
{gen}
{\TeX\ point-size factor, in scaled inches, ({\tt *scale/72.27})}
+\macrodef{PtoL}{PtoL}{({\sl position}, U|D|L|R|{\sl degrees}, {\sl length}) }
+ {gen}
+ {Evaluates to {\tt from {\sl position} to
+ {\sl position} + Rect\_({\sl length, angle}) }
+ from the polar-coordinate data in the arguments }
\macrodef{ptrans}{ptrans}{(\linespec, [R|L])}
{cct}
{pass transistor; {\tt L=} left orientation
@@ -1458,40 +1506,31 @@ nw,nn,ne,ns,pin lgth,style, other commands})}
\macrodef{rect\_}{rect_}{({\sl radius},{\sl angle})}
{gen}
{(radians) polar-rectangular conversion}
-\macrodef{reed}{reed}{({\sl linespec, width, height, box attribues}, [R][C])}
+\macrodef{reed}{reed}{({\sl linespec, width, height, box attribues},
+[R][C])}
{cct}
{Enclosed reed two-terminal contact;
- {\tt R}=right orientation; {\tt C}=closed contact;
- e.g., {\tt reed(,,dimen\_/5,shaded "lightgreen"}
- \seesect{Composite:}}
+ {\tt R}=right orientation; {\tt C}=closed contact; e.g., {\tt
+ reed(,,dimen\_/5,shaded "lightgreen"} \seesect{Composite:}}
\macrodef{relay}{relay}{({\sl number of poles, chars})}
{cct}
{relay: n poles (default 1), {\sl chars:} {\tt O}=normally open,
- {\tt C}=normally closed, {\tt P}=three position, default double throw,
- {\tt L}=drawn left (default),
- {\tt R}=drawn right, {\tt Th}=thermal.
- Argument 3={\tt [L|R]} is deprecated but works for
+ {\tt C}=normally closed, {\tt P}=three position, default double
+ throw, {\tt L}=drawn left (default), {\tt R}=drawn right, {\tt
+ Th}=thermal. Argument 3={\tt [L|R]} is deprecated but works for
backward compatibility
\seesect{Composite:}}
-\macrodef{relaycoil}{relaycoil}{({\sl chars, wid, ht,} R|L|U|D|{\sl degrees})}
- {cct}
- {chars:
- {\tt X}=or default: external lines from A2 and B2;
- {\tt AX}=external lines at positions A1,A3;
- {\tt BX}=external lines at positions B1,B3;
- {\tt NX}=no lines at positions A1,A2,A3,B1,B2,B3;
- {\tt SO}=slow operating;
- {\tt SOR}=slow operating and release;
- {\tt SR}=slow release;
- {\tt HS}=hight speed;
- {\tt HS}=hight speed;
- {\tt NAC}=unaffected by AC current;
- {\tt AC AC}=current;
- {\tt ML}=mechanically latched;
- {\tt PO}=polarized;
- {\tt RM}=remanent;
- {\tt RH}=remanent;
- {\tt TH}=thermal;
+\macrodef{relaycoil}{relaycoil}{({\sl chars, wid, ht,} R|L|U|D|{\sl
+degrees})}
+ {cct}
+ {chars:
+ {\tt X}=or default: external lines from A2 and B2; {\tt AX}=external
+ lines at positions A1,A3; {\tt BX}=external lines at positions
+ B1,B3; {\tt NX}=no lines at positions A1,A2,A3,B1,B2,B3; {\tt
+ SO}=slow operating; {\tt SOR}=slow operating and release; {\tt
+ SR}=slow release; {\tt HS}=high speed; {\tt NAC}=unaffected by AC
+ current; {\tt AC AC}=current; {\tt ML}=mechanically latched; {\tt
+ PO}=polarized; {\tt RM}=remanent; {\tt RH}=remanent; {\tt TH}=thermal;
{\tt EL}=electronic
\seesect{Composite:}}
\macrodef{resetdir\_}{resetdir_)}{}
@@ -1504,14 +1543,10 @@ nw,nn,ne,ns,pin lgth,style, other commands})}
cycle wid})}
{cct}
{resistor, n cycles (default 3), {\sl chars:}
- {\tt E}={\tt ebox},
- {\tt ES}={\tt ebox} with slash,
- {\tt Q}=offset,
- {\tt H}=squared,
- {\tt N}=IEEE,
- {\tt V}=varistor variant,
- {\tt R}=right-oriented,
- {\sl cycle width} (default {\tt dimen\_}$/6$) \seesect{Twoterminal:}}
+ {\tt E}={\tt ebox}, {\tt ES}={\tt ebox} with slash, {\tt Q}=offset,
+ {\tt H}=squared, {\tt N}=IEEE, {\tt B}=not burnable, {\tt V}=varistor
+ variant, {\tt R}=right-oriented, {\sl cycle width} (default {\tt
+ dimen\_}$/6$) \seesect{Twoterminal:}}
\macrodef{resized}{resized}{({\sl factor},`{\sl macro name}',args)}
{cct}
{scale the element body size by {\sl factor}}
@@ -1526,47 +1561,51 @@ nw,nn,ne,ns,pin lgth,style, other commands})}
{gen}
{color drawing for PSTricks, pgf, MetaPost, SVG postprocessors;
(color entries are 0 to 1 except for SVG entries which are 0 to 255),
- see {\tt setrgb} \seesect{Semiconductors:}.
- Exceptionally, the color of
- SVG arrows other than the default black has to be defined using
- the {\tt outlined }{\sl string} and {\tt shaded }{\sl string} constructs.}
+ see {\tt setrgb} \seesect{Semiconductors:}. Exceptionally, the color
+ of SVG arrows other than the default black has to be defined using the
+ {\tt outlined }{\sl string} and {\tt shaded }{\sl string} constructs.}
\macrodef{rgbfill}{rgbfill}{({\sl color triple}, {\sl closed path})}
{gen}
- {fill with arbitrary color (color entries are 0 to 1 except
- SVG entries which are 0 to 255); see {\tt setrgb}\seesect{Semiconductors:}}
+ {fill with arbitrary color (color entries are 0 to 1 except
+ SVG entries which are 0 to 255); see {\tt
+ setrgb}\seesect{Semiconductors:}}
\macrodef{rgbstring}{rgbstring}{({\sl color triple or color name})}
{gen}
{evaluates to a string compatible with the postprocessor in use
to go with {\tt colored}, {\tt shaded}, or {\tt outlined} attributes.
- (PSTricks, metapost, pgf-tikz, pdf, postscript, svg).
- The arguments are fractions
- in the range $[0,1]$; For example,
- {\tt box outlined rgbstring(0.1,0.2,0.7) shaded rgbstring(0.75,0.5,0.25)}.
- For those postprocessors that allow it,
- there can be one argument which is the name of a defined color}
+ (PSTricks, metapost, pgf-tikz, pdf, postscript, svg). The arguments
+ are fractions in the range $[0,1]$; For example, {\tt box outlined
+ rgbstring(0.1,0.2,0.7) shaded rgbstring(0.75,0.5,0.25)}. For those
+ postprocessors that allow it, there can be one argument which is the
+ name of a defined color}
\macrodef{right\_}{right_}{}
{gen}
{set current direction right \seesect{Placing:}}
\macrodef{RightAngle}{RightAngle}{({\sl Pos1, Pos2, Pos3, line len,
- attributes})}
- {gen}
- {Draw a right-angle symbol at {\sl Pos2}, of size given by arg4. Arg5 =
+ attributes})} {gen}
+ {Draw a right-angle symbol at {\sl Pos2}, of size
+ given by arg4. Arg5 =
line attributes, e.g., {\tt outlined "gray"}}
\macrodef{rjust\_}{rjust_}{}
{gen}
{right justify with respect to current direction}
-\macrodef{rlabel}{rlabel}{({\sl label},{\sl label},{\sl label})}
- {cct}
- {triple label on right side of the element \seesect{Labels:}}
+\macrodef{rlabel}{rlabel}{({\sl label},{\sl label},{\sl label},{\sl arg4},%
+ {\sl arg5})}
+ {cct}
+ {Triple label on the right of an element with respect to the current
+ direction \seesect{Labels:}. Labels are placed at the beginning,
+ centre, or end of the last {\tt []} block (or a named {\tt []}
+ block). The labels are treated as math, but copied literally if
+ in double quotes or defined by sprintf. {\sl Arg4} can be {\tt
+ above,} {\tt below,} {\tt left,} or {\tt right} to supplement the
+ default position. {\sl Arg5} is the optional name of a {\tt []}
+ block to be labelled and is {\tt last []} by default}
\macrodef{rot3Dx}{rot3Dx}{({\sl radians,x,y,z})}
- {3D}
- {rotates x,y,z about x axis}
+ {3D} {rotates x,y,z about x axis}
\macrodef{rot3Dy}{rot3Dy}{({\sl radians,x,y,z})}
- {3D}
- {rotates x,y,z about y axis}
+ {3D} {rotates x,y,z about y axis}
\macrodef{rot3Dz}{rot3Dz}{({\sl radians,x,y,z})}
- {3D}
- {rotates x,y,z about z axis}
+ {3D} {rotates x,y,z about z axis}
\macrodef{Rot\_}{Rot_}{({\sl position, degrees})}
{gen}
{rotate position by degrees}
@@ -1576,20 +1615,20 @@ nw,nn,ne,ns,pin lgth,style, other commands})}
\macrodef{rotbox}{rotbox}{({\sl wid,ht,type},[r|t={\sl val}])}
{gen}
{box oriented in current direction in {\tt [ ]} block;
- {\sl type}= e.g. {\tt dotted shaded "green".} Defined
- internal locations: N, E, S, W (and NE, SE, NW, SW if arg4 is blank).
- If arg4 is {\tt r=}{\sl val} then corners have radius {\sl val}.
- If arg4 is {\tt t=}{\sl val} then a spline with tension {\sl val}
- is used to draw a ``superellipse,'' and the bounding box is then
- only approximate. }
+ {\sl type}= e.g. {\tt dotted shaded "green".} Defined internal
+ locations: N, E, S, W (and NE, SE, NW, SW if arg4 is blank). If arg4
+ is {\tt r=}{\sl val} then corners have radius {\sl val}. If arg4 is
+ {\tt t=}{\sl val} then a spline with tension {\sl val} is used to draw
+ a ``superellipse,'' and the bounding box is then only approximate. }
\macrodef{rotellipse}{rotellipse}{({\sl wid,ht,type})}
{gen}
{ellipse oriented in current direction in {\tt [ ]} block;
- e.g. {\tt Point\_(45); rotellipse(,{},dotted fill\_(0.9)).} Defined internal
- locations: N, S, E, W.}
+ e.g. {\tt Point\_(45); rotellipse(,{},dotted fill\_(0.9)).} Defined
+ internal locations: N, S, E, W.}
\macrodef{round}{round}{(at {\sl location,line thickness,attributes})}
{gen}
- {filled circle for rounded corners; attributes={\tt colored "gray"}
+ {filled circle for rounded corners; attributes={\tt colored
+ "gray"}
for example; leaves {\tt Here} unchanged if arg1 is blank
\seesect{Corners:}}
\macrodef{rpoint\_}{rpoint_}{(\linespec)}
@@ -1639,7 +1678,8 @@ nw,nn,ne,ns,pin lgth,style, other commands})}
\seesect{Interaction:}}
\macrodef{s\_init}{s_init}{({\sl name})}
{gen}
- {initialize {\tt s\_box} string label to {\sl name} which should be unique
+ {initialize {\tt s\_box} string label to {\sl name} which should
+ be unique
\seesect{Interaction:}}
\macrodef{s\_name}{s_name}{}
{gen}
@@ -1674,43 +1714,50 @@ nw,nn,ne,ns,pin lgth,style, other commands})}
\macrodef{se\_}{se_}{}
{gen}
{.se with respect to current direction}
-\macrodef{series\_}{series_}{({\sl elementspec}, {\sl elementspec}, $\ldots$)}
+\macrodef{series\_}{series_}{({\sl elementspec}, {\sl elementspec},
+$\ldots$)}
{cct}
{ Series combination in a {\tt []} block of elements
- with shortened default length. An {\sl elementspec} is of the form
- {\tt [{\sl Label}:] {\sl element}; [{\sl attributes}]},
- where an {\sl attribute} is of the form
- {\tt [llabel($\ldots$);] | [rlabel($\ldots$);] [b\_current($\ldots$);]}.
- Internal points {\tt Start}, {\tt End}, and {\tt C} are defined
+ with shortened default length. An {\sl elementspec} is of the
+ form {\tt [{\sl Label}:] {\sl element}; [{\sl attributes}]},
+ where an {\sl attribute} is of the form {\tt [llabel($\ldots$);] |
+ [rlabel($\ldots$);] [b\_current($\ldots$);]}. Internal points {\tt
+ Start}, {\tt End}, and {\tt C} are defined
\seesect{Seriesandparallel:} }
-\macrodef{setdir\_}{setdir_}{(R|L|U|D|{\sl degrees}, {\sl default} U|D|R|L|{\sl degrees})}
+\macrodef{setdir\_}{setdir_}{(R|L|U|D|{\sl degrees}, {\sl default}
+U|D|R|L|{\sl degrees})}
{gen}
{store drawing direction and set it to
- up, down, left, right, or angle in degrees (reset by {\tt resetdir\_}).
- The directions may be spelled out, i.e., Right, Left, $\ldots$
+ up, down, left, right, or angle in degrees (reset by {\tt
+ resetdir\_}). The directions may be spelled out, i.e., Right,
+ Left, $\ldots$
\seesect{Seriesandparallel:}}
\macrodef{setrgb}{setrgb}{({\sl red value, green value, blue value},[{\sl
name}])}
{gen}
- {define colour for lines and text, optionally named (default {\tt lcspec});
+ {define colour for lines and text, optionally named (default
+ {\tt lcspec});
svg values are integers from 0 to 255\seesect{Semiconductors:}}
\macrodef{setkey\_}{setkey_}{({\sl string, key, default,}[N])}
{gen}
- {Key-value definition. The string contains semicolon-separated terms
+ {Key-value definition. The string contains semicolon-separated
+ terms
of the form {\sl key}{\tt =}{\sl value}. Then macro {\tt m4{\sl key}}
- is defined using {\tt pushdef} to be {\tt ({\sl value})} but if arg4 is
- nonbland, the parentheses are omitted.}
-\macrodef{setview}{setview}{({\sl azimuth degrees},{\sl elevation degrees})}
- {3D}
- {set projection viewpoint}
-\macrodef{sfg\_init}{sfg_init}{({\sl default line len, node rad, arrowhd len,
- arrowhd wid}), (reads {\tt libcct.m4})}
- {cct}
- {initialization of signal flow graph macros}
+ is defined using {\tt pushdef} to be {\tt ({\sl value})} but if arg4
+ is nonbland, the parentheses are omitted.}
+\macrodef{setview}{setview}{({\sl azimuth degrees},{\sl elevation
+degrees})}
+ {3D} {set projection viewpoint}
+\macrodef{sfg\_init}{sfg_init}{({\sl default line len, node rad,
+arrowhd len,
+ arrowhd wid}), (reads {\tt libcct.m4})} {cct}
+ {initialization of signal
+ flow graph macros}
\macrodef{sfgabove}{sfgabove}{}
{cct}
{like above but with extra space}
-\macrodef{sfgarc}{sfgarc}{(\linespec,{\sl text},{\sl text justification},cw|ccw,
+\macrodef{sfgarc}{sfgarc}{(\linespec,{\sl text},{\sl text
+justification},cw|ccw,
{\sl height scale factor})}
{cct}
{directed arc drawn between nodes, with text label
@@ -1718,16 +1765,17 @@ nw,nn,ne,ns,pin lgth,style, other commands})}
\macrodef{sfgbelow}{sfgbelow}{}
{cct}
{like below but with extra space}
-\macrodef{sfgline}{sfgline}{(\linespec,{\sl text},{\sl text justification})}
+\macrodef{sfgline}{sfgline}{(\linespec,{\sl text},{\sl text
+justification})}
{cct}
{directed straight line chopped by node radius, with text label}
\macrodef{sfgnode}{sfgnode}{(at {\sl location},{\sl text},above|below,{\sl
circle options})}
{cct}
- {small circle default white interior, with text label. The default label
- position is inside if the diameter is bigger than {\tt textht} and
- {\tt textwid}; otherwise it is {\tt sfgabove.} Options such as fill or
- line thickness can be given.}
+ {small circle default white interior, with text label. The default
+ label position is inside if the diameter is bigger than {\tt textht}
+ and {\tt textwid}; otherwise it is {\tt sfgabove.} Options such as
+ fill or line thickness can be given.}
\macrodef{sfgself}{sfgself}{(at {\sl location}, U|D|L|R|{\sl degrees},
{\sl text}, {\sl text justification}, cw|ccw, {\sl scale factor})}
{cct}
@@ -1740,19 +1788,27 @@ nw,nn,ne,ns,pin lgth,style, other commands})}
{gen}
{box with edge shading}
\macrodef{ShadedPolygon}{ShadedPolygon}{({\sl vertexseq, line attributes,
- degrees, colorseq})}
- {gen}
- {Draws the polygon specified in arg1 and shades the interior according
- to arg4 by drawing lines perpendicular to the angle in arg3.
- The {\sl vertexseq} is a colon ({\tt:}) separated sequence of vertex
- positions (or names) of the polygon in cw or ccw order. A {\sl colorseq}
- is of the form 0, r0,g0,b0, {\sl frac1},r1,g1,b1, {\sl frac2},r2,g2,b2,
- \ldots 1,rn,gn,bn with $0 < \hbox{\sl frac1} < \hbox{\sl frac2} \ldots 1$
-}
+ degrees, colorseq})} {gen}
+ {Draws the polygon specified in arg1 and
+ shades the interior according
+ to arg4 by drawing lines perpendicular to the angle in arg3. The {\sl
+ vertexseq} is a colon ({\tt:}) separated sequence of vertex positions
+ (or names) of the polygon in cw or ccw order. A {\sl colorseq} is of
+ the form 0, r0,g0,b0, {\sl frac1},r1,g1,b1, {\sl frac2},r2,g2,b2,
+ \ldots 1,rn,gn,bn with $0 < \hbox{\sl frac1} < \hbox{\sl frac2}
+ \ldots 1$
+} \macrodef{shielded}{shielded}{(`{\sl two-terminal element}',
+ L|U, {\sl line attributes})} {cct}
+ {shielding in a {\tt [ ]} box for
+ two-terminal element. Arg2= blank
+ (default) to enclose the element body; L for the left side with
+ respect to drawing direction, R for right. Internal points {\tt
+ .Start, .End,} and {\tt .C} are defined}
\macrodef{SIdefaults}{SIdefaults}{}
{gen}
{Sets {\tt scale = 25.4} for drawing units in mm, and sets
- pic parameters {\tt lineht = 12, linewid = 12, moveht = 12, movewid = 12,
+ pic parameters {\tt lineht = 12, linewid = 12, moveht = 12, movewid
+ = 12,
arcrad = 6, circlerad = 6, boxht = 12, boxwid = 18, ellipseht = 12,
ellipsewid = 18, dashwid = 2, arrowht = 3, arrowwid = arrowht/2,}}
\macrodef{sign\_}{sign_}{({\sl number})}
@@ -1767,29 +1823,30 @@ nw,nn,ne,ns,pin lgth,style, other commands})}
\macrodef{sind}{sind}{({\sl arg})}
{gen}
{sine of an expression in degrees}
-\macrodef{sinusoid}{sinusoid}{({\sl amplitude, frequency, phase, tmin, tmax,
+\macrodef{sinusoid}{sinusoid}{({\sl amplitude, frequency, phase, tmin,
+tmax,
linetype})}
{gen}
- {draws a sinusoid over the interval
- $(t_{\hbox{\scriptsize min}}, t_{\hbox{\scriptsize max}})$;
- 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}}
+ {draws a sinusoid over the interval $(t_{\hbox{\scriptsize min}},
+ t_{\hbox{\scriptsize max}})$;
+ 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|J|Q|L|N|P|S[C[r]]|E[r]]|T|X|U|{\sl other},
- {\sl diameter},R)}
+ 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
+ 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}
@@ -1802,8 +1859,7 @@ nw,nn,ne,ns,pin lgth,style, other commands})}
{speaker, {\sl In1} to {\sl In7} defined; {\tt H}=horn
\seesect{Composite:}}
\macrodef{sprod3D}{sprod3D}{(a,x,y,z)}
- {3D}
- {scalar product of triple x,y,z by a}
+ {3D} {scalar product of triple x,y,z by a}
\macrodef{sqrta}{sqrta}{({\sl arg})}
{gen}
{square root of the absolute value of {\sl arg}; i.e.,
@@ -1811,32 +1867,31 @@ nw,nn,ne,ns,pin lgth,style, other commands})}
\macrodef{SQUID}{SQUID}{({\sl n, diameter, initial angle}, {\tt ccw|cw})}
{cct}
{Superconducting quantum interface device
- with {\sl }n junctions labeled {\tt J1, ... J}{\sl n}
- placed around a circle with initial
- angle -90 deg (by default) with respect
- to the current drawing direction. The
- default diameter is {\tt dimen\_} }
+ with {\sl }n junctions labeled {\tt J1, ... J}{\sl n} placed around
+ a circle with initial angle -90 deg (by default) with respect to the
+ current drawing direction. The default diameter is {\tt dimen\_} }
\macrodef{stackargs\_}{stackargs}{(`{\sl stackname}',{\sl args})}
{gen}
{Stack arg 2, arg 3, ... onto the named stack up to a blank arg}
\macrodef{stackcopy\_}{stackcopy_}{(`{\sl name 1}',`{\sl name 2}')}
{gen}
- {Copy stack 1 into stack 2, preserving the order of pushed elements}
+ {Copy stack 1 into stack 2, preserving the order of pushed
+ elements}
\macrodef{stackdo\_}{stackdo}{(`{\sl stackname}',{\sl commands})}
{gen}
{Empty the stack to the first blank entry, performing arg 2}
\macrodef{stackexec\_}{stackexec_}{(`{\sl name 1}',`{\sl name 2}',%
{\sl commands})}
{gen}
- {Copy stack 1 into stack 2, performing arg3 for each nonblank entry}
+ {Copy stack 1 into stack 2, performing arg3 for each nonblank
+ entry}
\macrodef{stackprint\_}{stackprint_}{(`{\sl stack name}')}
{gen}
{Print the contents of the stack to the terminal}
-%\macrodef{stackpromote\_}{stackpromote_}{({\sl prefix},%
+%\macrodef{stackpromote\_}{stackpromote_}{({\sl prefix},%
% `{\sl stack name}',{\sl In name})}
% {gen}
-% {Define locations {\tt In1} or {\sl In name }{\tt 1}, $\ldots$ corresponding
-% to the locations in stack {\sl stack name}, as created by the
+% {Define locations {\tt In1} or {\sl In name }{\tt 1}, $\ldots$ corresponding % to the locations in stack {\sl stack name}, as created by the
% {\tt AutoGate} and {\tt Autologic} macros. Each location is prefixed
% by argument 1 ``.''}
\macrodef{stackreverse\_}{stackreverse_}{(`{\sl stack name}')}
@@ -1845,14 +1900,15 @@ nw,nn,ne,ns,pin lgth,style, other commands})}
\macrodef{stacksplit\_}{stacksplit_}{(`{\sl stack name}',{\sl string},{\sl
separator})}
{gen}
- {Stack the fields of {\sl string} left to right separated by nonblank
- {\sl separator} (default .). White space preceding the fields is ignored.}
+ {Stack the fields of {\sl string} left to right separated
+ by nonblank
+ {\sl separator} (default .). White space preceding the fields
+ is ignored.}
\macrodef{sum\_}{sum_}{({\sl a},{\sl b})}
{gen}
{binary sum}
\macrodef{sum3D}{sum3D}{({\sl x1,y1,z1,x2,y2,z2})}
- {3D}
- {sum of two triples}
+ {3D} {sum of two triples}
\macrodef{sus}{sus}{({\sl linespec, chars, label})}
{cct}
{Wrapper to place an SUS thyristor as a two-terminal element with
@@ -1881,29 +1937,29 @@ nw,nn,ne,ns,pin lgth,style, other commands})}
[{\sl arrowhd} | type={\sl arrowhd};name={\sl Name}],
{\sl fraction, length, fraction, length,} $\cdots$)}
{cct}
- {Draw the two-terminal element with taps in a [ ] block (see {\tt addtaps}).
- {\sl arrowhd} = blank or one of {\tt . - <- -> <->}.
- Each fraction determines the position along the element body of the tap.
- A negative length draws the tap to the right of the current
- direction; positive length to the left.
- Tap names are Tap1, Tap2, $\cdots$ by default or
- Name1, Name2, $\cdots$ if specified.
- Internal block names are {\tt .Start, .End,} and {.C} corresponding to the
- drawn element, and the tap names
- \seesect{Composite:} }
+ {Draw the two-terminal element with taps in a [ ] block (see
+ {\tt addtaps}).
+ {\sl arrowhd} = blank or one of {\tt . - <- -> <->}. Each fraction
+ determines the position along the element body of the tap. A negative
+ length draws the tap to the right of the current direction; positive
+ length to the left. Tap names are Tap1, Tap2, $\cdots$ by default
+ or Name1, Name2, $\cdots$ if specified. Internal block names are
+ {\tt .Start, .End,} and {.C} corresponding to the drawn element,
+ and the tap names \seesect{Composite:} }
\macrodef{tbox}{tbox}{({\sl text,wid,ht},<|>|<>,{\sl type})}
{cct}
- {Pointed terminal box. The {\sl text} is placed at the rectangular center
- in math mode unless the text begins with {\tt "} or {\tt sprintf} in which
- case the arument is used literally. Arg 4 determines whether the point is
- forward, backward, or both with respect to the current drawing direction.
+ {Pointed terminal box. The {\sl text} is placed at the rectangular
+ center
+ in math mode unless the text begins with {\tt "} or {\tt sprintf} in
+ which case the arument is used literally. Arg 4 determines whether
+ the point is forward, backward, or both with respect to the current
+ drawing direction.
\seesect{Composite:}}
\macrodef{tconn}{tconn}{({\sl linespec,}>|>>|<|<<|O[F],{\sl wid})}
{cct}
{Terminal connector, {\tt O}=circle; {\tt OF}=filled circle;
- {\tt > or >>} output connector
- (default {\tt >}) ;
- {\tt < or << input connector}; arg3 is arrowhead width or circle diameter
+ {\tt > or >>} output connector (default {\tt >}) ; {\tt < or <<
+ input connector}; arg3 is arrowhead width or circle diameter
\seesect{Composite:}}
\macrodef{tgate}{tgate}{({\sl linespec,} [B][R|L])}
{cct}
@@ -1911,11 +1967,11 @@ nw,nn,ne,ns,pin lgth,style, other commands})}
\seesect{Semiconductors:}}
\macrodef{thermocouple}{thermocouple}{({\sl linespec, wid, ht,} L|R)}
{cct}
- { Thermocouple drawn to the left (by default) of the {\sl linespec}
- line. If the {\sl linespec} length equals {\sl wid}
- (default {\tt dimen\_/5}), then only the two branches appear.
- {\tt R=} right orientation.
- \seesect{Twoterminal:}}
+ { Thermocouple drawn to the left (by default) of the {\sl
+ linespec}
+ line. If the {\sl linespec} length equals {\sl wid} (default
+ {\tt dimen\_/5}), then only the two branches appear. {\tt R=}
+ right orientation. \seesect{Twoterminal:}}
\macrodef{thicklines\_}{thicklines_}{({\sl number})}
{gen}
{set line thickness in points}
@@ -1923,40 +1979,40 @@ nw,nn,ne,ns,pin lgth,style, other commands})}
{gen}
{set line thickness in points}
\macrodef{threeD\_init}{threeD_init}{}
- {3D}
- {initialize 3D transformations (reads {\tt lib3D.m4})}
+ {3D} {initialize 3D transformations (reads {\tt lib3D.m4})}
\macrodef{thyristor}{thyristor}{(\linespec,%
{\tt [SCR|SCS|SUS|SBS|IEC][{\sl chars}]})}
{cct}
{Composite thyristor element in {\tt []}block:
types
- SCR: silicon controlled rectifier (default),
- SCS: silicon controlled switch,
- SUS: silicon unilateral switch,
- SBS: silicon bilateral switch,
- IEC: type IEC.
+ SCR: silicon controlled rectifier
+ (default), SCS: silicon controlled
+ switch, SUS: silicon unilateral switch,
+ SBS: silicon bilateral switch, IEC:
+ type IEC.
{\sl Chars} to modify or define the element:
- K: open arrowheads,
- A: arrowhead,
- F: half arrowhead,
- B: bidirectional diode,
- E: adds envelope,
- H: perpendicular gate (endpoint G),
- N: anode gate (endpoint Ga),
- U: centre line in diodes
- V: perpendicular gate across arrowhead centre,
- R=right orientation,
- E=envelope
+ K: open arrowheads, A: arrowhead, F:
+ half arrowhead, B: bidirectional diode,
+ E: adds envelope, H: perpendicular
+ gate (endpoint G), N: anode gate
+ (endpoint Ga), U: centre line in diodes
+ V: perpendicular gate across arrowhead
+ centre,
+ R=right orientation, E=envelope
\seesect{Semiconductors:}}
\macrodef{tikznode}{tikznode}{({\sl \Tikz node name, position}) }
{pgf}
{insert \Tikz code to define a zero-size \Tikz node at {\sl location}
- (default {\tt Here}) to assist with inclusion of \pic code output in
- \Tikz diagrams. This macro must be invoked in the outermost \pic scope.
- \seesect{Tikzwithpic:}}
+ (default {\tt Here}) to assist with inclusion of \pic code output
+ in \Tikz diagrams. This macro must be invoked in the outermost
+ \pic scope. \seesect{Tikzwithpic:}}
\macrodef{tline}{tline}{(\linespec,{\sl wid},{\sl ht}) }
{cct}
{transmission line, manhattan direction\seesect{Twoterminal:}}
+\macrodef{ToPos}{ToPos}{({\sl position}, U|D|L|R|{\sl degrees}, {\sl length}) }
+ {gen}
+ {Evaluates to {\tt from {\sl position} - Rect\_({\sl length, angle}) to
+ {\sl position}} from the polar-coordinate data in the arguments }
\macrodef{tr\_xy\_init}{tr_xy_init}{({\sl origin, unit size, sign })}
{cct}
{initialize {\tt tr\_xy}}
@@ -1966,26 +2022,22 @@ nw,nn,ne,ns,pin lgth,style, other commands})}
\macrodef{transformer}{transformer}{(\linespec,L|R,{\sl np},%
[A|P][W|L][D1|D2|D12|D21],{\sl ns})}
{cct}
- {2-winding transformer or choke with terminals P1, P2, TP, S1, S2, TS:
- arg2: L = left, R = right,
- arg3: np primary arcs,
- arg5: ns secondary arcs,
- arg4: A = air core, P = powder (dashed) core,
- W = wide windings, L = looped windings,
- D1: phase dots at P1 and S1 end; D2 at P2 and S2 end; D12 at P1 and S2 end;
- D21 at P2 and S1 end
+ {2-winding transformer or choke with terminals P1, P2, TP, S1,
+ S2, TS:
+ arg2: L = left, R = right, arg3: np primary arcs, arg5: ns secondary
+ arcs, arg4: A = air core, P = powder (dashed) core, W = wide windings,
+ L = looped windings, D1: phase dots at P1 and S1 end; D2 at P2 and
+ S2 end; D12 at P1 and S2 end; D21 at P2 and S1 end
\seesect{Composite:}}
\macrodef{tstrip}{tstrip}{(R|L|U|D|{\sl degrees, nterms, chars})}
{cct}
{terminal strip, chars:
- I=invisible terminals,
- C=circle terminals (default),
- D=dot terminals,
- O=omitted separator lines,
- {\tt wid=}value{\tt ;} total strip width,
+ I=invisible terminals, C=circle terminals (default), D=dot terminals,
+ O=omitted separator lines, {\tt wid=}value{\tt ;} total strip width,
{\tt ht=}value{\tt ;} strip height
\seesect{Composite:}}
-\macrodef{ttmotor}{ttmotor}{({\sl linespec, string, diameter, brushwid, brushht})}
+\macrodef{ttmotor}{ttmotor}{({\sl linespec, string, diameter, brushwid,
+brushht})}
{cct}
{motor with label\seesect{Twoterminal:}}
\macrodef{twopi\_}{twopi_}{}
@@ -1997,8 +2049,7 @@ nw,nn,ne,ns,pin lgth,style, other commands})}
{unijunction transistor, right, P-channel, envelope
\seesect{Semiconductors:}}
\macrodef{unit3D}{unit3D}{(x,y,z)}
- {3D}
- {unit triple in the direction of triple x,y,z}
+ {3D} {unit triple in the direction of triple x,y,z}
\macrodef{up\_\_}{up__}{}
{gen}
{up with respect to current direction}
@@ -2007,30 +2058,33 @@ nw,nn,ne,ns,pin lgth,style, other commands})}
{set current direction up \seesect{Placing:}}
\Letter{V}%
\macrodef{variable}{variable}{(`{\sl element}',
- {\tt [A|P|L|[u]N|[u]NN][C|S]},{\sl angle},{\sl length})}
+ {\tt [A|P|L|[u]N|[u]NN][C|S]}, [+|-]{\sl angle},
+ {\sl length}, at position)}
{cct}
{overlaid arrow or line to indicate variable 2-terminal element:
- {\tt A}=arrow, {\tt P}=preset,
- {\tt L}=linear,
- {\tt N}= symmetric nonlinear,
- {\tt C}=continuous, {\tt S}=setpwise; {\tt u} changes the
- nonlinearity direction
+ {\tt A}=arrow, {\tt P}=preset, {\tt L}=linear, {\tt N}= symmetric
+ nonlinear, {\tt C}=continuous, {\tt S}=setpwise; {\tt u} changes
+ the nonlinearity direction. The angle is absolute but preceding
+ it with a sign makes the angle (often -30 or -45) relative to the
+ element drawing direction. If arg5 is blank the symbol is placed
+ over the last {\tt [ ]} block
\seesect{Twoterminal:}}
\macrodef{Vcoords\_}{Vcoords_}{({\sl position})}
{gen}
{The $x, y$ coordinate pair of the position}
\macrodef{Vdiff\_}{Vdiff_}{({\sl position},{\sl position})}
{gen}
- {{\tt Vdiff\_(A,B)} evaluates to {\tt A-(B)} with dpic, {\tt A-(B.x,B.y)}
+ {{\tt Vdiff\_(A,B)} evaluates to {\tt A-(B)} with dpic, {\tt
+ A-(B.x,B.y)}
with gpic}
\macrodef{vec\_}{vec_}{({\sl x},{\sl y})}
{gen}
{position rotated with respect to current direction}
\macrodef{View3D}{View3D}{}
- {3D}
- {The view vector (triple) defined by {\tt setview({\sl azim, elev})}. The
- {\tt project}
- macro projects onto the plane perpendicular to this vector}
+ {3D} {The view vector (triple) defined by {\tt setview({\sl azim,
+ elev})}. The
+ {\tt project} macro projects onto the plane perpendicular to this
+ vector}
\macrodef{vlength}{vlength}{({\sl x},{\sl y})}
{gen}
{vector length $\sqrt{x^2+y^2}$}
@@ -2039,7 +2093,8 @@ nw,nn,ne,ns,pin lgth,style, other commands})}
{unit-vector pair CCW-perpendicular to linear object}
\macrodef{Vperp}{Vperp}{({\sl position name}, {\sl position name})}
{gen}
- {unit-vector pair CCW-perpendicular to line joining two named positions}
+ {unit-vector pair CCW-perpendicular to line joining two named
+ positions}
\macrodef{vrot\_}{vrot_}{({\sl x},{\sl y},{\sl xcosine},{\sl ycosine})}
{gen}
{rotation operator}
@@ -2051,7 +2106,8 @@ nw,nn,ne,ns,pin lgth,style, other commands})}
{The vector in arg 1 multiplied by the scalar in arg 2}
\macrodef{Vsum\_}{Vsum_}{({\sl position},{\sl position})}
{gen}
- {{\tt Vsum\_(A,B)} evaluates to {\tt A+B} with dpic, {\tt A+(B.x,B.y)}
+ {{\tt Vsum\_(A,B)} evaluates to {\tt A+B} with dpic, {\tt
+ A+(B.x,B.y)}
with gpic}
\Letter{W}%
\macrodef{w\_}{w_}{}
@@ -2071,8 +2127,8 @@ nw,nn,ne,ns,pin lgth,style, other commands})}
\macrodef{XOR\_gate}{XOR_gate}{({\sl n},N)}
{log}
{`xor' gate, 2 or {\sl n\/} inputs; N=negated input.
- Otherwise, arg1 can be a sequence of letters {\tt P|N}
- to define normal or negated inputs.
+ Otherwise, arg1 can be a sequence of letters {\tt P|N} to define
+ normal or negated inputs.
\seesect{Logicgates:}}
\macrodef{XOR\_off}{XOR_off}{}
{log}
@@ -2084,4 +2140,10 @@ nw,nn,ne,ns,pin lgth,style, other commands})}
\macrodef{xtract}{xtract}{({\sl string, substr1, substr2, $\ldots$})}
{gen}
{returns substrings if present}
+\Letter{Y}%
+\macrodef{Ysymbol}{Ysymbol}{(at {\sl position},keys,
+ U|D|L|R|{\sl degrees}) (default {\tt U} for up)}
+ {cct}
+ {Y symbol for power-system diagrams
+ {\sl keys:} {\tt size={\sl expression}; type=G}}
% \end{tabbing}
diff --git a/graphics/circuit_macros/doc/fetMan.m4 b/graphics/circuit_macros/doc/fetMan.m4
index 08498ef83d..9c39871378 100644
--- a/graphics/circuit_macros/doc/fetMan.m4
+++ b/graphics/circuit_macros/doc/fetMan.m4
@@ -1,11 +1,9 @@
.PS
-# `fet.m4'
+# `fetMan.m4'
cct_init
-dwn = 0.9
-dwn = 1.0
-rgt = 0.9
textht = 0.1
+define(`rmove',0.75)
dnl `IRF4905(linespec,R)'
define(`IRF4905',
@@ -18,74 +16,84 @@ define(`IRF4905',
G: Q.G
circle rad 5*dimen_/10 at Q.tr_xy(0,1) ]')
-define(`rmove',0.75)
-define(`dir_',`right_')
-
-Orig: Here
-dir_
- { move left 0.2 }
- {J: j_fet(right_ dimen_,,,E)
- "{\tt j\_fet(right\_ dimen\_,{,},E)}" wid 1.75 \
- with .nw at last [].sw+(0.0,-0.25)
- "$G$" at last [].G rjust above
- "$S$" at last [].S rjust
- "$D$" at last [].D ljust
- }
-
- move right_ 0.9; dir_
- {j_fet(,,P,)
- "{\tt j\_fet(,{,}P,)}" at last [].s+(0,-0.05) below
- "$G$" at last [].G rjust
- "$S$" at last [].S rjust
- "$D$" at last [].D ljust
- }
-
- move right_ 0.9; dir_
- {e_fet(,R,,)
- "{\tt e\_fet(,R,{,})}" at last [].s+(0,-0.05) below
- "$G$" at last [].G rjust
- "$S$" at last [].S rjust
- "$D$" at last [].D ljust
- }
-
- {move down_ dwn; dir_
- e_fet(,,P)
- "{\tt e\_fet(,{,}P)}" at last [].s+(0.1,-0.2) below}
-
- move right_ 0.9; dir_
- {d_fet(,,,)
- "{\tt d\_fet(,{,},)}" at last [].s+(0,-0.05) below}
-
- {move down_ dwn; dir_
- d_fet(,,P)
- "{\tt d\_fet(,{,}P)}" at last [].s+(0,-0.05) below}
-
- move right_ 0.9; dir_
- {e_fet(,,,S)
- "{\tt e\_fet(,{,},S)}" at last [].s+(0,-0.05) below}
-
- {move down_ dwn; dir_
- e_fet(,,P,S)
- "{\tt e\_fet(,{,}P,S)}" at last [].s+(0,-0.2) below}
-
- move right_ 0.9; dir_
- {d_fet(,,,S)
- "{\tt d\_fet(,{,},S)}" at last [].s+(0,-0.2) below}
-
- {move down_ dwn; dir_
- d_fet(,,P,S)
- "{\tt d\_fet(,{,}P,S)}" at last [].s+(0,-0.05) below}
-
- move right_ 0.9; dir_
- {c_fet(,,,)
- "{\tt `c\_fet'(,{,},)}" at last [].s+(0,-0.05) below}
-
- {move down_ dwn; dir_
- c_fet(,,P)
- "{\tt `c\_fet'(,{,}P)}" at last [].s+(0,-0.2) below}
+Row1: [ J: j_fet
+ { "{\tt j\_fet}" at J.s+(0,-0.05) below
+ "$G$" at J.G rjust
+ "$S$" at J.S rjust
+ "$D$" at J.D ljust }
+ J: j_fet(right_ dimen_,,P,E) with .w at J.e+(0.5,0)
+ { "{\tt j\_fet(right\_}" "{\tt dimen\_,{,}P,E)}" at J.s+(0,-13bp__) below
+ "$G$" at J.G rjust above
+ "$S$" at J.S rjust
+ "$D$" at J.D ljust }
+ J: e_fet with .w at J.e+(0.5,0)
+ { "{\tt $\;$ e\_fet}" at J.s+(0,-0.05) below
+ "$G$" at J.G rjust
+ "$S$" at J.S rjust
+ "$D$" at J.D ljust }
+ J: e_fet(,,P) with .w at J.e+(0.6,0)
+ { "{\tt $\;$ e\_fet(,{,}P)}" at J.s+(0,-0.05) below
+ "$G$" at J.G rjust
+ "$S$" at J.S rjust
+ "$D$" at J.D ljust }
+ J: e_fet(,,P,S) with .w at J.e+(0.7,0)
+ { "{\tt $\;$ e\_fet(,{,}P,S)}" at J.s+(0,-0.05) below
+ "$G$" at J.G rjust
+ "$S$" at J.S rjust
+ "$D$" at J.D ljust }
+ J: c_fet with .w at J.e+(0.6,0)
+ { "{\tt $\;$ c\_fet}" at J.s+(0,-0.05) below
+ "$G$" at J.G rjust
+ "$S$" at J.S rjust
+ "$D$" at J.D ljust }
+ J: c_fet(,,P) with .w at J.e+(0.6,0)
+ { "{\tt $\;$ c\_fet(,{,}P)}" at J.s+(0,-0.05) below
+ "$G$" at J.G rjust
+ "$S$" at J.S rjust
+ "$D$" at J.D ljust }
+ ]
+
+Row2: [
+ J: d_fet
+ { "{\tt d\_fet}" at J.s+(0,-0.05) below
+ "$G$" at J.G rjust
+ "$S$" at J.S rjust
+ "$D$" at J.D ljust }
+ J: d_fet(,,P) with .w at J.e+(0.5,0)
+ { "{\tt d\_fet(,{,}P)}" at J.s+(0,-0.05) below
+ "$G$" at J.G rjust
+ "$S$" at J.S rjust
+ "$D$" at J.D ljust }
+ J: d_fet(,,P,S) with .w at J.e+(0.7,0)
+ { "{\tt d\_fet(,{,}P,S)}" at J.s+(0,-0.05) below
+ "$G$" at J.G rjust
+ "$S$" at J.S rjust
+ "$D$" at J.D ljust }
+ J: g_fet with .w at J.e+(0.6,0)
+ { "{\tt g\_fet}" at J.s+(0,-0.05) below
+ "$G$" at J.G rjust
+ "$S$" at J.S rjust
+ "$D$" at J.D ljust }
+ J: g_fet(up_ dimen_,,P) with .w at J.e+(0.6,0)
+ { "{\tt `g\_fet'(up\_$\;\;$}" at last [].s below
+ "{\tt dimen\_,{,}P)}" at last [].s + (0,-12bp__) below
+ "{\sl G}" at last [].G rjust
+ "{\sl S}" at last [].S + (0,2bp__) ljust
+ "{\sl D}" at last [].D + (0,2bp__) ljust below }
+ right_
+ M1: mosfet(,,dBSDFQM1,E) with .w at J.e+(0.5,0)
+ "$G0$" at M1.G0 above rjust
+ "$G1$" at M1.G1 above ljust
+ {"\tt `mosfet'(,{,}dBSDFQM1,E)" wid 1.45 \
+ with .nw at last [].sw+(0,-0.2) }
+ M2: mosfet(,,dBSDFQuM1) with .nw at M1.ne+(0.5,0)
+ "$G0$" at M2.G0 above ljust
+ "$G1$" at M2.G1 above rjust
+ {"\tt ...(,{,}dBSDFQuM1)" wid 1.25 \
+ with .n at last [].s+(0,-0.05) }
+ ] with .nw at Row1.sw+(0,-0.1)
-move down 1; right_
- [
+Row3: [
linewid = linewid*1.2
Q1: mosfet(,,dGSDF,)
@@ -132,8 +140,22 @@ move down 1; right_
"$D$" at last [].D ljust
"$B$" at last [].B below
}
-
- move right_ rmove
+ move right_
+ J: Fe_fet #(right_ dimen_)
+ {`"{\tt $\;$ Fe\_fet}"' at J.s+(0,-0.05) below
+ "$G$" at J.G rjust
+ "$S$" at J.S rjust
+ "$D$" at J.D ljust }
+ move right_
+ J: Fe_fet(,,TEDQSuB)
+ {`"{\tt $\;$ Fe\_fet(,,TEDSQuB)}"' at J.s+(0,-0.15) below
+ "$G$" at J.G rjust
+ "$S$" at J.S rjust
+ "$D$" at J.D ljust }
+ ] with .nw at last [].sw
+
+Row4: [
+ {move left 0.25}
Q5: mosfet(,,ZSDFdT,)
{"\tt `$\ldots$'(,{,}ZSDFdT,)" at last [].s+(0,-0.05) below
thinlines_
@@ -144,8 +166,7 @@ move down 1; right_
arrow <- down .08 right .24 from (Q5.G.x,Q5.G.y-0.02)
"\tt dT" ljust
thicklines_ }
-
- move right_ rmove
+ move right_ 0.8
up_
Q6: IRF4905 with .c at Here
{`"\tt IRF4905"' at Q6.s+(0,-0.15) below
@@ -153,18 +174,6 @@ move down 1; right_
"$D$" at Q6.D ljust above
"$S$" at Q6.S ljust below
}
- ] with .nw at J.sw+(0,-1.35) #Orig+(-0.26,-1.2)
-
- right_
- M1: mosfet(,,dBSDFQM1,E) with .nw at J.nw+(0,-dwn)
- "$G0$" at M1.G0 above rjust
- "$G1$" at M1.G1 above ljust
- {"\tt `mosfet'(,{,}dBSDFQM1,E)" wid 1.45 \
- with .nw at last [].sw+(0,-0.23) }
- M2: mosfet(,,dBSDFQuM1) with .nw at M1.ne+(0.5,0)
- "$G0$" at M2.G0 above ljust
- "$G1$" at M2.G1 above rjust
- {"\tt ...(,{,}dBSDFQuM1)" wid 1.25 \
- with .n at last [].s+(0,-0.05) }
+ ] with .nw at last [].sw
.PE
diff --git a/graphics/circuit_macros/doc/oax.m4 b/graphics/circuit_macros/doc/oax.m4
deleted file mode 100644
index d2396d6ced..0000000000
--- a/graphics/circuit_macros/doc/oax.m4
+++ /dev/null
@@ -1,5 +0,0 @@
-.PS
-# `oax.m4'
-cct_init
-include(oaxbody.m4)
-.PE
diff --git a/graphics/circuit_macros/doc/opampex.m4 b/graphics/circuit_macros/doc/opampex.m4
new file mode 100644
index 0000000000..0edc3296c3
--- /dev/null
+++ b/graphics/circuit_macros/doc/opampex.m4
@@ -0,0 +1,5 @@
+.PS
+# `opampex.m4'
+cct_init
+include(opampexbody.m4)
+.PE
diff --git a/graphics/circuit_macros/doc/oaxbody.m4 b/graphics/circuit_macros/doc/opampexbody.m4
index 983b816cf5..983b816cf5 100644
--- a/graphics/circuit_macros/doc/oaxbody.m4
+++ b/graphics/circuit_macros/doc/opampexbody.m4
diff --git a/graphics/circuit_macros/doc/relaycoilMan.m4 b/graphics/circuit_macros/doc/relaycoilMan.m4
index b3273794cd..7966a32294 100644
--- a/graphics/circuit_macros/doc/relaycoilMan.m4
+++ b/graphics/circuit_macros/doc/relaycoilMan.m4
@@ -3,7 +3,7 @@
cct_init
spc = dimen_/3
-{ relaycoil; S: "\tt re{}laycoil" at last [].s+(0,-20bp__)
+{ relaycoil; S: `"\tt relaycoil"' at last [].s+(0,-16bp__)
{ "\sl V1" wid 10bp__ at last [].V1 rjust
"\sl V2" at last [].V2 ljust }
K: relaycoil(NX) with .nw at last [].ne+(spc*4,0); "\tt (NX)" at (last [],S)
@@ -20,10 +20,12 @@ cct_init
{ "\sl V1" at last [].V1 rjust; "\sl V2" at last [].V2 rjust }
relaycoil(BXSR) with .nw at last [].ne+(spc*2,0); "\tt (BXSR)" at (last [],S)
{ "\sl V1" at last [].V1 ljust; "\sl V2" at last [].V2 ljust }
- relaycoil(SR) with .nw at last [].ne+(spc*4,0); "\tt (SR)" at (last [],S)
+ relaycoil(SR) with .nw at last [].ne+(spc*3,0); "\tt (SR)" at (last [],S)
relaycoil(SO) with .nw at last [].ne+(spc,0); "\tt (SO)" at (last [],S)
relaycoil(SOR) with .nw at last [].ne+(spc,0); "\tt (SOR)" at (last [],S)
+ relaycoil(PC) with .nw at last [].ne+(spc,0); "\tt (PC)" at (last [],S)
}
+ spc = dimen_/4
{
move down_ 3/4; right_
relaycoil(HS); S: "\tt (HS)" at last [].s+(0,-12bp__)
@@ -35,6 +37,7 @@ cct_init
relaycoil(RH) with .nw at last [].ne+(spc,0); "\tt (RH)" at (last [],S)
relaycoil(TH) with .nw at last [].ne+(spc,0); "\tt (TH)" at (last [],S)
relaycoil(EL) with .nw at last [].ne+(spc,0); "\tt (EL)" at (last [],S)
+ relaycoil(MR) with .sw at last [].se+(spc,0); "\tt (MR)" at (last [],S)
}
.PE