diff options
author | Norbert Preining <norbert@preining.info> | 2020-02-18 03:02:28 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2020-02-18 03:02:28 +0000 |
commit | bb5325dae4202b519b7210a338651301e048998d (patch) | |
tree | 4caa8d8c62275cb193df85d10f8f0e10bab587b3 /graphics/circuit_macros/doc | |
parent | 67394fd2cfa6167f7e2316237629bec93851c1fb (diff) |
CTAN sync 202002180302
Diffstat (limited to 'graphics/circuit_macros/doc')
-rw-r--r-- | graphics/circuit_macros/doc/CctTable.m4 | 3 | ||||
-rw-r--r-- | graphics/circuit_macros/doc/Circuit_macros.pdf | bin | 911278 -> 629598 bytes | |||
-rw-r--r-- | graphics/circuit_macros/doc/Circuit_macros.tex | 2 | ||||
-rw-r--r-- | graphics/circuit_macros/doc/Contact.m4 | 98 | ||||
-rw-r--r-- | graphics/circuit_macros/doc/Contacts.m4 | 46 | ||||
-rw-r--r-- | graphics/circuit_macros/doc/FlipFlop.m4 | 38 | ||||
-rw-r--r-- | graphics/circuit_macros/doc/Jack.m4 | 2 | ||||
-rw-r--r-- | graphics/circuit_macros/doc/Makefile | 12 | ||||
-rw-r--r-- | graphics/circuit_macros/doc/Pconn.m4 | 8 | ||||
-rw-r--r-- | graphics/circuit_macros/doc/Relay.m4 | 106 | ||||
-rw-r--r-- | graphics/circuit_macros/doc/Switches.m4 | 132 | ||||
-rw-r--r-- | graphics/circuit_macros/doc/Thermal.m4 | 2 | ||||
-rw-r--r-- | graphics/circuit_macros/doc/Version.tex | 2 | ||||
-rw-r--r-- | graphics/circuit_macros/doc/body.tex | 203 | ||||
-rw-r--r-- | graphics/circuit_macros/doc/defines.tex | 95 | ||||
-rw-r--r-- | graphics/circuit_macros/doc/md.tex | 59 | ||||
-rw-r--r-- | graphics/circuit_macros/doc/relaycoil.m4 | 40 | ||||
-rw-r--r-- | graphics/circuit_macros/doc/tran.m4 | 5 | ||||
-rw-r--r-- | graphics/circuit_macros/doc/tran.tex | 76 |
19 files changed, 524 insertions, 405 deletions
diff --git a/graphics/circuit_macros/doc/CctTable.m4 b/graphics/circuit_macros/doc/CctTable.m4 index 40b5849d66..f7e47d0758 100644 --- a/graphics/circuit_macros/doc/CctTable.m4 +++ b/graphics/circuit_macros/doc/CctTable.m4 @@ -83,5 +83,8 @@ vm = 0.28 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} +} .PE diff --git a/graphics/circuit_macros/doc/Circuit_macros.pdf b/graphics/circuit_macros/doc/Circuit_macros.pdf Binary files differindex e0a03e9510..302f862d93 100644 --- a/graphics/circuit_macros/doc/Circuit_macros.pdf +++ b/graphics/circuit_macros/doc/Circuit_macros.pdf diff --git a/graphics/circuit_macros/doc/Circuit_macros.tex b/graphics/circuit_macros/doc/Circuit_macros.tex index 36f9bdf694..49e6570970 100644 --- a/graphics/circuit_macros/doc/Circuit_macros.tex +++ b/graphics/circuit_macros/doc/Circuit_macros.tex @@ -14,7 +14,7 @@ \usepackage[T1]{fontenc} \usepackage{lmodern} %\usepackage{textcomp} -%\usepackage{microtype} +\usepackage{microtype} %\DisableLigatures{encoding=T1,family=tt*} % \addtolength{\textwidth}{3cm} diff --git a/graphics/circuit_macros/doc/Contact.m4 b/graphics/circuit_macros/doc/Contact.m4 new file mode 100644 index 0000000000..26f8d5a982 --- /dev/null +++ b/graphics/circuit_macros/doc/Contact.m4 @@ -0,0 +1,98 @@ +.PS +# Contact +cct_init + +movw = 0.45 +{ + contact + {S:`"\tt contact"' at last [].s+(0,-0.15) + "\sl P" rjust at last [].P.w + "\sl O" ljust at last [].O + "\sl C" ljust at last [].C } + move right_ movw; contact(R) + {`"\tt (R)"' at (last [].s,S) + "\sl P" rjust at last [].P.w + "\sl O" ljust at last [].O + "\sl C" ljust at last [].C } + move right_ movw; contact(O); {`"\tt (O)"' at (last [],S)} + move right_ movw; contact(C); {`"\tt (C)"' at (last [],S)} + + move right_ movw; contact(P) + {S: `"\tt (P)"' at last [].s+(0,-0.15) + "\sl P" rjust at last [].P.w + "\sl O" ljust at last [].O + "\sl C" ljust at last [].C } + move right_ movw; contact(PR) + {S: `"\tt (PR)"' at last [].s+(0,-0.15) + "\sl P" rjust at last [].P.w + "\sl O" ljust at last [].O + "\sl C" ljust at last [].C } + move right_ movw; contact(PO); {`"\tt (PO)"' at (last [],S)} + {"\sl O" ljust at last [].O + "\sl C" ljust at last [].C } + move right_ movw; contact(PC); {`"\tt (PC)"' at (last [],S)} +} + +move down 0.75; right_ ; { + contact(I); {`S: "\tt (I)"' at last [].s+(0,-12bp__) + "\sl P" rjust at last [].P.w + "\sl O" ljust at last [].O.e + "\sl C" ljust at last [].C.e } + move right_ movw; contact(RI) + {`"\tt (RI)"' at (last [],S) + "\sl P" rjust at last [].P.w + "\sl O" ljust at last [].O.e + "\sl C" ljust at last [].C.e } + move right_ movw; contact(OI); {`"\tt (OI)"' at (last [],S)} + move right_ movw; contact(CI); {`"\tt (CI)"' at (last [],S)} + + move right_ movw; contact(PI); {`"\tt (PI)"' at (last [],S) } + {"\sl O" ljust at last [].O.e + "\sl C" ljust at last [].C.e } + move right_ movw; contact(PIO); {`"\tt (PIO)"' at (last [],S) } + move right_ movw; contact(PIC); {`"\tt (PIC)"' at (last [],S) } +} + +movewid = movw + move down 0.65; right_; { + K: contact(T) + {S: `"\tt (T)"' at last [].s+(0,-0.15) + thinlines_ + spline <- right 0.09 then up 0.05 right 0.05 from K.C; "$\;\;$\sl C" + spline <- right 0.09 then down 0.05 right 0.05 from K.O; "$\;\;$\sl O" + thicklines_ } + move; K: contact(RT) + {`"\tt (RT)"' at (last [],S) + thinlines_ + spline <- right 0.09 then up 0.05 right 0.05 from K.O; "$\;\;$\sl O" + spline <- right 0.09 then down 0.05 right 0.05 from K.C; "$\;\;$\sl C" + thicklines_ } + move; contact(OT); {S: `"\tt (OT)"' at (last [],S) } + move; contact(CT); {S: `"\tt (CT)"' at (last [],S) } + move; contact(PT); {S: `"\tt (PT)"' at (last [],S) } + move; contact(PTO); {S: `"\tt (PTO)"' at (last [],S) } + move; contact(PTC); {S: `"\tt (PTC)"' at (last [],S) } +} + + move down 0.65; right_; { + K: contact(U) + {S: `"\tt (U)"' at last [].s+(0,-0.15) + thinlines_ + spline <- right 0.09 then up 0.05 right 0.05 from K.C; "$\;\;$\sl C" + spline <- right 0.09 then down 0.05 right 0.05 from K.O; "$\;\;$\sl O" + thicklines_ } + move; K: contact(RU) + {`"\tt (RU)"' at (last [],S) + thinlines_ + spline <- right 0.09 then up 0.05 right 0.05 from K.O; "$\;\;$\sl O" + spline <- right 0.09 then down 0.05 right 0.05 from K.C; "$\;\;$\sl C" + thicklines_ } + move; K: contact(OU); {S: `"\tt (OU)"' at (last [],S) + "\sl O" ljust at K.O.e } + move; K: contact(CU); {S: `"\tt (CU)"' at (last [],S) + "\sl C" ljust at K.C.e } + move; contact(PU); {S: `"\tt (PU)"' at (last [],S) } + move; contact(PUO); {S: `"\tt (PUO)"' at (last [],S) } + move; contact(PUC); {S: `"\tt (PUC)"' at (last [],S) } +} +.PE diff --git a/graphics/circuit_macros/doc/Contacts.m4 b/graphics/circuit_macros/doc/Contacts.m4 new file mode 100644 index 0000000000..9e006218e3 --- /dev/null +++ b/graphics/circuit_macros/doc/Contacts.m4 @@ -0,0 +1,46 @@ +.PS +# Contacts.m4 +cct_init + + space = 0.75 + KS:contacts(2) + {`"\tt contacts(2)"' at KS.s +(0,-12bp__) + for_(1,2,1, + `"\sl P`'m4x" rjust at last [].P`'m4x-(dotrad_,0) + "\sl O`'m4x" ljust at last [].O`'m4x+(dotrad_,0) + "\sl C`'m4x" ljust at last [].C`'m4x+(dotrad_,0) ') } + + KS:contacts(2,I) with .sw at last [].se+(space,0) + {`"\tt (2,I)"' at KS.s +(0,-12bp__) + for_(1,2,1, + `"\sl P`'m4x" rjust at last [].P`'m4x-(dotrad_,0) + "\sl O`'m4x" ljust at last [].O`'m4x+(dotrad_,0) + "\sl C`'m4x" ljust at last [].C`'m4x+(dotrad_,0) ') } + + KS:contacts(2,IO) with .sw at last [].se+(space,0) + {`"\tt (2,IO)"' at KS.s +(0,-12bp__) + for_(1,2,1, + `"\sl P`'m4x" rjust at last [].P`'m4x-(dotrad_,0) + "\sl O`'m4x" ljust at last [].O`'m4x+(dotrad_,0) ') } + + KS:contacts(2,PICD) with .sw at last [].se+(space,0) + {`"\tt (2,PICD)"' at KS.s +(0,-12bp__) + for_(1,2,1, + `"\sl P`'m4x" rjust at last [].P`'m4x-(dotrad_,0) + "\sl O`'m4x" ljust at last [].O`'m4x+(dotrad_,0) + "\sl C`'m4x" ljust at last [].C`'m4x+(dotrad_,0) ') } + + KS:contacts(2,PTCD) with .sw at last [].se+(space,0) + {`"\tt (2,PTCD)"' at KS.s +(0,-12bp__) + for_(1,2,1, + `"\sl P`'m4x" rjust at last [].P`'m4x-(dotrad_,0) + "\sl O`'m4x" ljust at last [].O`'m4x+(dotrad_,0) + "\sl C`'m4x" ljust at last [].C`'m4x+(dotrad_,0) ') } + + KS:contacts(2,PUCD) with .sw at last [].se+(space,0) + {`"\tt (2,PUCD)"' at KS.s +(0,-12bp__) + for_(1,2,1, + `"\sl P`'m4x" rjust at last [].P`'m4x-(dotrad_,0) + "\sl O`'m4x" ljust at last [].O`'m4x+(dotrad_,0) + "\sl C`'m4x" ljust at last [].C`'m4x+(dotrad_,0) ') } +.PE diff --git a/graphics/circuit_macros/doc/FlipFlop.m4 b/graphics/circuit_macros/doc/FlipFlop.m4 index c04ca6ba89..a4fca85284 100644 --- a/graphics/circuit_macros/doc/FlipFlop.m4 +++ b/graphics/circuit_macros/doc/FlipFlop.m4 @@ -1,20 +1,24 @@ .PS # `FlipFlop.m4' log_init -iflatex(`textoffset = 1bp__; ifpsfrag(,`latexcommand({\sf)') ') +iflatex(`ifpsfrag(,`latexcommand({\sf)') ') s_init(Flipflop) sinclude(Circuit_macros.dim) + +[ right_ { Q1: FlipFlop(D,Q1) s_box(``\tt FlipFlop(D,Q1)'') at last [].Chip.s below h1 = L_unit*20 w1 = L_unit*12 FlipFlop(T,Q2,ht h1 wid w1 fill_(0.9)) with .w at last [].e+(0.25,0) - s_box(``\tt FlipFlop(T,Q2,ht h1 wid w1 fill\_(0.9))'') \ + s_box(``\shortstack{\tt FlipFlop(T,Q2,\\ + \tt\quad ht h1 wid w1 fill\_(0.9))}'') \ at (last [].Chip,2nd last [].Chip.s)+(0,-0.25) - FlipFlop(RS) with .w at last [].e+(0.25,0) - s_box(``\tt FlipFlop(RS)'') at last [].Chip.s below - FlipFlop(JK) with .w at last [].e+(0.25,0) + FlipFlop(RS,,,Chip.wid/8) with .w at last [].e+(0.5,0) + s_box(``\shortstack[l]{\tt FlipFlop(RS,{,},\\ + \tt\quad Chip.wid/8)}'') at last [].sw below ljust + FlipFlop(JK) with .w at last [].e+(0.5,0) s_box(``\tt FlipFlop(JK)'') with .n at last [].PinPR.end } move down 1.5; right_ @@ -28,5 +32,29 @@ right_ s_box(``\shortstack[l]{\tt FlipFlopX(,{,} \\ \tt\quad:J;E:CK;:K,N:CLR,:Q;)}'') at last [].Chip.s below } +] + +if 0 then { +[ +# Redrawn from +# https://tex.stackexchange.com/questions/521724/how-could-i-write-this-in-a-more-exportable-way + + for_(0,4,1,` + Q: FlipFlopX(ifelse(m4x,0,`fill_(0.95)'),, + :Q:PinQ; :lg_bartxt(Q):PinNQ, + :CLR:PinCLR, + :J:PinJ; E::PinCK; :K:PinK, + :PRST:PinPRST, + 0) with .PinCK at Here + ifelse(m4x,0, + `S: source(right_ sourcerad_*2 at Q.Chip,U) + line from S.start to Q.PinCK') + T: Q.PinQ-(Q.Chip.wid/2,0) + arrow from Q.PinQ to T then up Q.Chip.ht/2; { "$Q_`'m4x$" above } + ifelse(m4x,4,,`arrow from T to (T,Q.PinCK) then left Q.Chip.wid/2') + ') +] with .nw at last [].sw+(0,-0.5) +} + iflatex(ifpsfrag(,`latexcommand(})')) .PE diff --git a/graphics/circuit_macros/doc/Jack.m4 b/graphics/circuit_macros/doc/Jack.m4 index 3c56061e67..b9a005d279 100644 --- a/graphics/circuit_macros/doc/Jack.m4 +++ b/graphics/circuit_macros/doc/Jack.m4 @@ -73,6 +73,6 @@ L: [ right_ `"\tt ..(L,RLS)"' below at (J3,last "") `"\tt ..(L,RLBLMLMS)"' below at (J4,last "") `"\tt ..(,RSBSMLB)"' below at (J5,last "") -] with .nw at P.sw + (0,0.1) +] with .nw at P.sw #+ (0,0.1) .PE diff --git a/graphics/circuit_macros/doc/Makefile b/graphics/circuit_macros/doc/Makefile index a934e20bba..463f3c0ec1 100644 --- a/graphics/circuit_macros/doc/Makefile +++ b/graphics/circuit_macros/doc/Makefile @@ -8,14 +8,14 @@ PICTEX = \ AmpTable.tex Antennas.tex Audio.tex Axes.tex \ Buffer.tex BigResistor.tex Bip.tex \ CctTable.tex Composite.tex ConfigA.tex ConfigB.tex ConfigC.tex Conn.tex \ - Corners.tex \ + Corners.tex Contact.tex Contacts.tex \ Dac.tex Darlington.tex Demultiplexer.tex Diodes.tex \ Emarrows.tex FF.tex FlipFlop.tex \ Flowdiag.tex Fuses.tex Grounds.tex \ Headers.tex HybridPi.tex Jack.tex \ Logic.tex Loop.tex Multiplexer.tex NPDT.tex NLG.tex Nport.tex \ Oblique.tex Opamp.tex Opto.tex \ - ParSeries.tex Pconn.tex Potentiometers.tex Relay.tex \ + ParSeries.tex Pconn.tex Potentiometers.tex Relay.tex relaycoil.tex \ Series.tex ShiftR.tex Sinus.tex Sources.tex Switches.tex \ Taps.tex Tgate.tex Thermal.tex Tline.tex Ttree.tex \ Variable.tex Xform.tex Windings.tex Workflow.tex \ @@ -64,13 +64,14 @@ M4LIBS = $(MODE).m4 $(M4) $(M4LIBS) $(DOC).dim $*.m4 > $*.pic ($(PRE) $(PIC) $*.pic $(POST)) > $*.tex -CMpdf: +$(DOC).pdf: touch mode.tex -if grep -q tikz mode.tex ; then true ; else \ make clean ; printf "\\usepackage{tikz}\n" > mode.tex ; fi make MODE=pgf PIC="dpic -g" LATEX=pdflatex SFX=pdf \ POST="; printf '\\\\vspace*{-0.5\\\\baselineskip}\\n'" \ $(DOC).pdf + optpdf $(DOC).pdf chmod 644 $(DOC).pdf $(DOC).ps: @@ -134,9 +135,8 @@ ex08.m4: ../examples/ex08.m4 clobber: clean rm -f *.dvi Circuit_macros.pdf -# rm -f Circuit_macros.pdf clean: rm -f *.bbl *.log *.aux *.blg *.toc citations *.verb ex08.m4 - rm -f *.pic $(PICTEX) heading.tex *.dim *.uu Circuit_macros.ps Circuit_macros.dvi - rm -f mode.tex Circuit_macros.out *.upa *.upb *.brf + rm -f *.pic $(PICTEX) heading.tex *.dim *.uu Circuit_macros.ps + rm -f mode.tex Circuit_macros.out *.upa *.upb *.brf Circuit_macros.dvi diff --git a/graphics/circuit_macros/doc/Pconn.m4 b/graphics/circuit_macros/doc/Pconn.m4 index 946ec0fda6..fbda5cc2e7 100644 --- a/graphics/circuit_macros/doc/Pconn.m4 +++ b/graphics/circuit_macros/doc/Pconn.m4 @@ -24,8 +24,6 @@ P1: [ C3: pconnex(,ACF) with .w at last [].e+(0.2,0) `"\tt (,ACF)"' at last [].s below - C4: pconnex(,P) with .w at last [].e+(0.2,0) - `"\tt (,P)"' at (C4,last "") below C5: pconnex(U,D) with .w at last [].e+(0.2,0) `"\tt (U,D)"' at last [].s below C6: pconnex(U,DF) with .w at last [].e+(0.2,0) @@ -37,7 +35,11 @@ P1: [ ] P2: [ - C9: pconnex(,G) + C4: pconnex(,P) + `"\tt (,P)"' at last [].s below + C11: pconnex(,PF) with .w at last [].e+(0.2,0) + `"\tt (,PF)"' at (C11,last "") below + C9: pconnex(,G) with .w at last [].e+(0.2,0) `"\tt (,G)"' at last [].s below C91: pconnex(,GF) with .w at last [].e+(0.2,0) `"\tt (,GF)"' at last [].s below diff --git a/graphics/circuit_macros/doc/Relay.m4 b/graphics/circuit_macros/doc/Relay.m4 index ee52fa4994..20c51ebb6a 100644 --- a/graphics/circuit_macros/doc/Relay.m4 +++ b/graphics/circuit_macros/doc/Relay.m4 @@ -1,84 +1,44 @@ .PS -# Relay.m4 +# Relay cct_init -movw = 0.85 -{contact - {`"\tt contact"' at last [].s+(0,-0.2) - "\sl P" rjust at last [].P.w - "\sl O" ljust at last [].O - "\sl C" ljust at last [].C } - move right_ movw; contact(R,) - {`"\tt contact(,R)"' at last [].s+(0,-0.2) - "\sl P" rjust at last [].P.w - "\sl O" ljust at last [].O - "\sl C" ljust at last [].C } - move right_ movw; contact(P) - {`"\tt contact(P)"' at last [].s+(0,-0.2) - "\sl P" rjust at last [].P.w - "\sl O" ljust at last [].O - "\sl C" ljust at last [].C } - move right_ movw; contact(O,); {`"\tt contact(O,)"' at last [].s+(0,-0.2)} - move right_ movw; contact(C,); {`"\tt contact(C,)"' at last [].s+(0,-0.2)} -#move right_ movw; reed; {`"\tt reed"' at last [].s+(0,-0.2)} -} -move down 0.8 -right_ -{contact(I) - {`"\tt contact(I)"' at last [].s+(0,-0.2) - "\sl P" rjust at last [].P.w - "\sl O" ljust at last [].O.e - "\sl C" ljust at last [].C.e } - move right_ movw; contact(RI) - {`"\tt contact(RI)"' at last [].s+(0,-0.2) - "\sl P" rjust at last [].P.w - "\sl O" ljust at last [].O.e - "\sl C" ljust at last [].C.e } - move right_ movw; contact(PI) - {`"\tt contact(PI)"' at last [].s+(0,-0.2) - "\sl P" rjust at last [].P.w - "\sl O" ljust at last [].O.e - "\sl C" ljust at last [].C.e } - move right_ movw; contact(OI); {`"\tt contact(OI)"' at last [].s+(0,-0.2)} - move right_ movw; contact(CI); {`"\tt contact(CI)"' at last [].s+(0,-0.2)} -#move right_ movw; reed(,,,fill_(0.9),CR); -# {`"\shortstack[l]{\tt reed(\\\tt$\;\;$,{,},fill\_(0.9),CR)}"' \ -# at last [].s+(0,-0.2)} -} -move down 1.2 -right_ -{ -relay +skip = 1.1 + +R1:relay {"\sl V1" wid 0.16 rjust at last [].V1 "\sl V2" ljust at last [].V2 - "\sl P1" rjust at last [].P1.w + "\sl P1" rjust at last [].P1-(dotrad_,0) "\sl O1" ljust at last [].O1 "\sl C1" ljust at last [].C1 } -`"\tt relay"' at last [].s+(0,-0.2) -relay(2) with .sw at last [].sw+(1.2,0) + S: `"\tt relay"' at last [].s+(0,-0.2) + +R5:relay(2,CTh) with .sw at last [].sw+(skip,0) + { for_(1,2,1,` + "\sl P`'m4x" rjust at last [].P`'m4x-(dotrad_,0) + "\sl C`'m4x" ljust at last [].C`'m4x ') } + `"\tt (2,CTh)"' at (last [],S) + +R4:relay(2,O) with .sw at last [].sw+(skip,0) + {for_(1,2,1,` + "\sl P1" rjust at last [].P1-(dotrad_,0) + "\sl O`'m4x" ljust at last [].O`'m4x ')} + `"\tt (2,O)"' at (last [],S) + +R3:relay(2,PIAX) with .sw at last [].sw+(skip,0) {"\sl V1" rjust at last [].V1 - "\sl V2" ljust at last [].V2 - "\sl P1" rjust at last [].P1.w - "\sl O1" ljust at last [].O1 - "\sl C1" ljust below at last [].C1 - "\sl P2" rjust at last [].P2.w - "\sl O2" ljust at last [].O2 - "\sl C2" ljust at last [].C2 } -`"\tt relay(2)"' at last [].s+(0,-0.2) -relay(2,RPI) with .sw at last [].sw+(1.2,0) + "\sl V2" rjust at last [].V2 + for_(1,2,1, + `"\sl P`'m4x" rjust at last [].P`'m4x-(dotrad_,0) + "\sl O`'m4x" ljust at last [].O`'m4x+(dotrad_,0) + "\sl C`'m4x" ljust at last [].C`'m4x+(dotrad_,-2pt__) ') } + `"\tt (2,PIAX)"' at (last [],S) + +R2:relay(2,R) with .sw at last [].sw+(skip,0) {"\sl V1" rjust at last [].V1 "\sl V2" ljust at last [].V2 - "\sl P1" rjust at last [].P1.w - "\sl O1" ljust at last [].O1 - "\sl C1" ljust at last [].C1+(0,2pt__) - "\sl P2" rjust at last [].P2.w - "\sl O2" ljust at last [].O2+(0,-2pt__) - "\sl C2" ljust at last [].C2 } -`"\tt relay(2,RIP)"' at last [].s+(0,-0.2) -relay(2,O) with .sw at last [].sw+(1.2,0) -`"\tt relay(2,O)"' at last [].s+(0,-0.2) -relay(2,CT) with .sw at last [].sw+(1.2,0) -`"\tt relay(2,CT)"' at last [].s+(0,-0.2) -} - + for_(1,2,1, + `"\sl P`'m4x" rjust at last [].P`'m4x-(dotrad_,0) + "\sl O`'m4x" ljust at last [].O`'m4x + "\sl C`'m4x" ljust at last [].C`'m4x ') } + `"\tt relay(2,R)"' at (last [],S) .PE diff --git a/graphics/circuit_macros/doc/Switches.m4 b/graphics/circuit_macros/doc/Switches.m4 index 03218d4ab5..d8262be92d 100644 --- a/graphics/circuit_macros/doc/Switches.m4 +++ b/graphics/circuit_macros/doc/Switches.m4 @@ -1,99 +1,117 @@ .PS # Switches.m4 cct_init + movewid = 0.25 -moveht = moveht*1.25 +# Row 1 right_; { - lswitch; rlabel(,`\hbox{\tt `lswitch'}') + lswitch; {S:"\tt ls{}witch" at last [].s+(0,-10bp__)} move right_ - lswitch(,,O); rlabel(,`\hbox{\tt (,{,}O)}') + lswitch(,,O); {"\tt (,,O)" at (last [],S)} move right_ - lswitch(,,C); rlabel(,`\hbox{\tt (,{,}C)}') + lswitch(,,C); {"\tt (,,C)" at (last [],S)} move right_ - lswitch(,,DA); rlabel(,`\hbox{\tt (,{,}DA)}') + lswitch(,,DA); {"\tt (,,DA)" at (last [],S)} move right_ - lswitch(,,DO); rlabel(,`\hbox{\tt (,{,}DO)}') + lswitch(,,dDO); {"\tt (,,dDO)" at (last [],S)} move right_ - lswitch(,,DC); rlabel(,`\hbox{\tt (,{,}DC)}') + lswitch(,,uDC); {"\tt (,,uDC)" at (last [],S)} } +# Row 2 move down; right_; { - lswitch(,,K); rlabel(,`\hbox{\tt (,{,}K)}') + lswitch(,,K); {S:"\tt (,,K)" at last [].s+(0,-10bp__)} move right_ - lswitch(,,KD); rlabel(,`\hbox{\tt (,{,}KD)}') + lswitch(,,KD); {"\tt (,,KD)" at (last [],S)} move right_ - lswitch(,,KOD); rlabel(,`\hbox{\tt (,{,}KOD)}') + lswitch(,,KOD); {"\tt (,,KOD)" at (last [],S)} move right_ - lswitch(,,KCD); rlabel(,`\hbox{\tt (,{,}KCD)}') + lswitch(,,KCD); {"\tt (,,KCD)" at (last [],S)} move right_ - bswitch; rlabel(,`\hbox{\tt `bswitch'}') + bswitch; {"\tt `bswitch'" at (last [],S)} move right_ - bswitch(,,C); rlabel(,`\hbox{\tt (,{,}C)}') + bswitch(,,C); {"\tt (,,C)" at (last [],S)} } +# Row 3 move down; right_; { - S: dswitch(,,) - ifgpic(`{[line invis] at S.c+(0,-0.2)}') - rlabel(,`\hbox{\tt \shortstack{`dswitch'=\\`switch'(,{,},D)}}') - thinlines_ - { spline <- from 0.25 along_(S) up 0.1 then up 0.05 left 0.1 - "\tt W" rjust - spline <- from S.c+(0,m4sc*2) up 0.1 then up 0.05 left 0.1 - "\tt B" rjust } - thicklines_ - move right_ - S: dswitch(,,WdBK); rlabel(,`\hbox{\tt (,{,}WdBK)}') - thinlines_ - { spline <- from tr_xy(0,-2) up 0.1 then up 0.10 left 0.1 - "\tt dB" rjust - spline <- from tr_xy(4,-2) right 0.1 then right 0.05 up 0.15 - "\tt K" above } - thicklines_ - move right_ - dswitch(,,WBuD); rlabel(,`\hbox{\tt (,{,}WBuD)}') - move right_ - dswitch(,,WdBKF); rlabel(,`\hbox{\tt (,{,}WdBKF)}') - move right_ - dswitch(,,WBL); rlabel(,`\hbox{\tt (,{,}WBL)}') - move right_ - dswitch(,,WdBKL); rlabel(,`\hbox{\tt (,{,}WdBKL)}') + D: dswitch(,,); {S: "\tt ds{}witch(,{},)" at last [].s+(0,-10bp__)} + thinlines_ + { spline <- from 0.25 along_(D) up 0.1 then up 0.05 left 0.1 + {"\tt W" rjust} + spline <- from D.c+(0,m4sc*2) up 0.1 then up 0.05 left 0.1 + {"\tt B" rjust }} + thicklines_ + move right_ + D: dswitch(,,WdBK); {"\tt (,,WdBK)" at (last [],S)+(0,-4bp__)} + thinlines_ + { spline <- from tr_xy(0,-2) up 0.1 then up 0.10 left 0.1 + {"\tt dB" rjust} + spline <- from tr_xy(4,-2) right 0.1 then right 0.05 up 0.15 + {"\tt K" above }} + thicklines_ + move right_ + dswitch(,,WBmdDK); {"\tt (,,WBmdDK)" at (last [],S)} + move right_ + dswitch(,,WBKTr); {"\tt (,,WBKTr)" at (last [],S)} + move right_ + dswitch(,,WdBL); {"\tt (,,WdBL)" at (last [],S+(0,-4bp__))} + move right_ + dswitch(,,WBCo); {"\tt (,,WBCo)" at (last [],S)} } +# Row 4 move down; right_; { - dswitch(,,WBT); rlabel(,`\hbox{\tt (,{,}WBT)}') + dswitch(,,WBKCo); {S: "\tt (,,WBKCo)" at last [].s+(0,-10bp__)} move right_ - dswitch(,,WdBKC); rlabel(,`\hbox{\tt (,{,}WdBKC)}') + dswitch(,,WBCb); {"\tt (,,WBCb)" at (last [],S)} move right_ - dswitch(,,WBM); rlabel(,`\hbox{\tt (,{,}WBM)}') + dswitch(,,WBDI); {"\tt (,,WBDI)" at (last [],S)} move right_ - dswitch(,,WBCO); rlabel(,`\hbox{\tt (,{,}WBCO)}') + dswitch(,,WBSd); {"\tt (,,WBSd)" at (last [],S)} move right_ - dswitch(,,WBMP); rlabel(,`\hbox{\tt (,{,}WBMP)}') + dswitch(,,WBFDI); {"\tt (,,WBFDI)" at (last [],S)} move right_ - dswitch(,,WBoKCP); rlabel(,`\hbox{\tt (,{,}WBoKCP)}') + dswitch(,,WBFSd); {"\tt (,,WBFSd)" at (last [],S)} } - move down; right_; { - dswitch(,,WBCY); rlabel(,`\hbox{\tt (,{,}WBCY)}') +# Row 5 + move down moveht*5/4; right_; { + dswitch(,,WBTh); {S: "\tt (,,WBTh)" at last [].s+(0,-10bp__)} + move right_ + dswitch(,,WBKC); {"\tt (,,WBKC)" at (last [],S)} + move right_ + dswitch(,,WBM); {"\tt (,,WBM)" at (last [],S)} + move right_ + dswitch(,,WBCO); {"\tt (,,WBCO)" at (last [],S)} + move right_ + dswitch(,,WBMP); {"\tt (,,WBMP)" at (last [],S)} + move right_ + dswitch(,,WBoKCP); {"\tt (,,WBoKCP)" at (last [],S)} + } +# Row 6 + move down moveht*5/4; right_; { + dswitch(,,WBCY); {S: "\tt (,,WBCY)" at last [].s+(0,-10bp__)} move right_ - dswitch(,,WBCZ); rlabel(,`\hbox{\tt (,{,}WBCZ)}') + dswitch(,,WBCZ); {"\tt (,,WBCZ)" at (last [],S)} move right_ - dswitch(,,WBCE); rlabel(,`\hbox{\tt (,{,}WBCE)}') + dswitch(,,WBCE); {"\tt (,,WBCE)" at (last [],S)} move right_ - dswitch(,,WBRH); rlabel(,`\hbox{\tt (,{,}WBRH)}') + dswitch(,,WBRH); {"\tt (,,WBRH)" at (last [],S)} move right_ - dswitch(,,WBRdH); rlabel(,`\hbox{\tt (,{,}WBRdH)}') + dswitch(,,WBRdH); {"\tt (,,WBRdH)" at (last [],S)} move right_ - dswitch(,,WBRHH); rlabel(,`\hbox{\tt (,{,}WBRHH)}') + dswitch(,,WBRHH); {"\tt (,,WBRHH)" at (last [],S)} } +# Row 7 move down; right_; { - dswitch(,,WBMMR); rlabel(,`\hbox{\tt (,{,}WBMMR)}') + dswitch(,,WBMMR); {S: "\tt (,,WBMMR)" at last [].s+(0,-10bp__)} move right_ - dswitch(,,WBMM); rlabel(,`\hbox{\tt (,{,}WBMM)}') + dswitch(,,WBMM); {"\tt (,,WBMM)" at (last [],S)} move right_ - dswitch(,,WBMR); rlabel(,`\hbox{\tt (,{,}WBMR)}') + dswitch(,,WBMR); {"\tt (,,WBMR)" at (last [],S)} move right_ - dswitch(,,WBEL); rlabel(,`\hbox{\tt (,{,}WBEL)}') + dswitch(,,WBEL); {"\tt (,,WBEL)" at (last [],S)} move right_ - dswitch(,,WBLE); rlabel(,`\hbox{\tt (,{,}WBLE)}') + dswitch(,,WBLE); {"\tt (,,WBLE)" at (last [],S)} move right_ - dswitch(,,WdBoKEL); rlabel(,`\hbox{\tt (,{,}WdBoKEL)}') + dswitch(,,WBoKEL); {"\tt (,,WBoKEL)" at (last [],S)} } .PE diff --git a/graphics/circuit_macros/doc/Thermal.m4 b/graphics/circuit_macros/doc/Thermal.m4 index 6feffc3680..68cdd7a0c0 100644 --- a/graphics/circuit_macros/doc/Thermal.m4 +++ b/graphics/circuit_macros/doc/Thermal.m4 @@ -2,7 +2,7 @@ # Thermal.m4 cct_init define(`thermalsw', - `dswitch(`$1',`$2',WDdBT) + `dswitch(`$1',`$2',WDdBTh) circle rad distance(M4T,last line.c) at last line.c') thermalsw .PE diff --git a/graphics/circuit_macros/doc/Version.tex b/graphics/circuit_macros/doc/Version.tex index f10e710006..4bb8dbffa5 100644 --- a/graphics/circuit_macros/doc/Version.tex +++ b/graphics/circuit_macros/doc/Version.tex @@ -1 +1 @@ -Version 9.1 +Version 9.2 diff --git a/graphics/circuit_macros/doc/body.tex b/graphics/circuit_macros/doc/body.tex index 91c8fbe3ec..38aff51f3b 100644 --- a/graphics/circuit_macros/doc/body.tex +++ b/graphics/circuit_macros/doc/body.tex @@ -82,9 +82,8 @@ combinations of them for particular drawings. \xection{Using the macros\label{Using:}} This section describes the basic process of adding circuit diagrams to \latex documents to produce postscript or pdf files. On some operating -systems, project management software with graphical interfaces can be used -to automate the process, -but the steps can also be performed by a script, +systems, project management software with graphical interfaces can +automate the process, but the steps can also be performed by a script, makefile, or by hand for simple documents as described in~\SR{Quickstart:}. The diagram source file is preprocessed as illustrated in @@ -836,9 +835,10 @@ The two-terminal elements are shown in \FRS{CctTable} to~\REF{Diodes} and \FRS{Fuses} to~\REF{Switches}. Several elements are included more than once to illustrate some of their arguments, which are listed in \SR{defines}. +\enlargethispage{\baselineskip} \begin{figure}[h!] \input CctTable - \ifpdf\vspace*{-0.5\baselineskip}\fi% + \ifpdf\vspace*{-\baselineskip}\fi% \caption{Basic two-terminal elements, showing some variations.} \label{CctTable} \end{figure} @@ -1446,18 +1446,6 @@ A {\tt D1} puts phase dots at the {\sl P1, S1} end, {\tt D2} at the and centre-tap points.} \label{Xform} \end{figure} -\iffalse -A transformer with four connections is illustrated -in \FR{tran}. -\begin{figure}[hbt] - \parbox{4in}{\small \verbatiminput{tranbody.m4}}% - \quad\raise-0.2in\hbox{\input tran }% - \vspace{-\baselineskip} - \caption{Showing the - {\tt transformer(\linespec,L|R,np,A,ns)} macro.} - \label{tran} - \end{figure} -\fi %\enlargethispage{\baselineskip} \FR{Audio} shows some audio devices, defined in {\tt []} blocks, @@ -1479,7 +1467,6 @@ Thus, {\tt S: speaker(U) with .In2 at Here} \noindent -%\enlargethispage{\baselineskip} places an upward-facing speaker with input {\sl In2} at the current location. @@ -1536,63 +1523,79 @@ define(`nullor',`nport(`$1' The above example and the related gyrator macro are illustrated in \FR{NLG}. + \ifpdf\vspace*{\baselineskip}\fi% \begin{figure}[h!t] \input NLG - \ifpdf\vspace*{-1.5\baselineskip}\fi% \caption{The {\tt nullor} example and the {\tt gyrator} macro are customizations of the {\tt nport} macro.} \label{NLG} \end{figure} -A basic winding macro for magnetic-circuit sketches and similar figures -is shown in \FR{Windings}. +The double-throw switches shown in \FR{NPDT} are drawn in the +current drawing direction like the two-terminal elements, but are +composite elements that must be placed accordingly. \begin{figure}[h!t] - \vspace*{-\baselineskip}% -% \ifpdf\vspace*{-2\baselineskip}\else \vspace{-\baselineskip}\fi - \input Windings - \ifpdf\vspace*{-\baselineskip}\else\vspace*{-1ex}\fi - \caption{The {\tt winding(L|R, diam, pitch, turns, core wid, core color)} - macro draws a coil with axis along the current drawing direction. - Terminals {\tt T1} and {\tt T2} are defined. - Setting the first argument to {\tt R} draws a right-hand winding.} - \label{Windings} + \ifpdf\vspace*{-0.5\baselineskip}\fi% + \input NPDT + \ifpdf\vspace*{-0.5\baselineskip}\fi% + \caption{Multipole double-throw switches drawn by + {\tt NPDT({\sl npoles}, [R])}.} + \label{NPDT} \end{figure} -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!). -\FR{Relay} shows the macro {\tt contact({\sl chars})}, +\FR{Contact} shows the macro {\tt contact({\sl chars})}, which contains predefined locations {\sl P, C, O} for the armature and normally closed and normally open terminals. An {\tt I} in the first argument draws open circles for contacts. -The macro {\tt relay({\sl poles, chars})} -defines coil terminals {\sl V1, V2} and contact -terminals {\sl P$_i$, C$_i$, O$_i$.} -\begin{figure}[ht] +\begin{figure}[h!t] \ifpdf\vspace*{-\baselineskip}\else\vspace*{-0.5\baselineskip}\fi% - \input Relay + \input Contact \vspace{-1ex} \caption{The {\tt contact({\sl chars})} - and {\tt relay({\sl poles, chars})} - macros (default direction right).} - \label{Relay} + macro (default drawing direction right) + can be used alone, in a set of ganged contacts, or in relays.} + \label{Contact} \end{figure} -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. +The {\tt contacts({\sl poles, chars})} macro in \FR{Contacts} +draws multiple contacts. \begin{figure}[h!t] - \ifpdf\vspace*{-0.5\baselineskip}\fi% - \input NPDT - \ifpdf\vspace*{-0.5\baselineskip}\fi% - \caption{Multipole double-throw switches drawn by - {\tt NPDT({\sl npoles}, [R])}.} - \label{NPDT} + \ifpdf\vspace*{-\baselineskip}\else\vspace*{-0.5\baselineskip}\fi% + \input Contacts + \vspace{-1ex} + \caption{The {\tt contacts({\sl poles, chars})} + macro (drawing direction right).} + \label{Contacts} + \end{figure} + +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. +\begin{figure}[h!t] + \ifpdf\vspace*{-\baselineskip}\else\vspace*{-0.5\baselineskip}\fi% + \input relaycoil + \vspace{-1ex} + \caption{The {\tt relaycoil} macro.} + \label{relaycoil} + \end{figure} + +The {\tt relay({\sl poles, chars})} macro in \FR{Relay} +defines coil terminals {\sl V1, V2} and contact +terminals {\sl P$_i$, C$_i$, O$_i$.} +\begin{figure}[h!t] + \ifpdf\vspace*{-\baselineskip}\else\vspace*{-0.5\baselineskip}\fi% + \input Relay + \vspace{-1ex} + \caption{The {\tt relay({\sl poles, chars})} + macro (drawing direction right).} + \label{Relay} \end{figure} The {\tt jack} and {\tt plug} macros and their defined points are illustrated in \FR{Jack}. + The first argument of both macros establishes the drawing direction. \begin{figure}[h!t] \input Jack \vspace{-1ex} @@ -1601,21 +1604,11 @@ The {\tt jack} and {\tt plug} macros and their defined points are and their defined points.} \label{Jack} \end{figure} - The first argument of both macros - establishes the drawing direction. The second argument is a string of - characters defining drawn components. + The second argument is a string of characters defining drawn components. An {\tt R} in the string specifies a right orientation with respect to the drawing direction. The two principal terminals of the jack are included by putting \hbox{{\tt L} {\tt S}} -% -% This is a kludge to put a blank line on the bottom -\phantom{or both into the string with associated make ({\tt M}) -or break ({\tt B}) points. Thus, {\tt LMB} within the third}\hfill\break -\phantom{or both into the string with associated make ({\tt M}) -or break ({\tt B}) points. Thus, {\tt LMB} within the third}\hfill\break -% -% or both into the string with associated make ({\tt M}) or break ({\tt B}) points. Thus, {\tt LMB} within the third argument draws the {\tt L} contact with @@ -1623,10 +1616,26 @@ or break ({\tt B}) points. Thus, {\tt LMB} within the third}\hfill\break or {\tt S[M|B]} substrings add auxiliary contacts with specified make or break points. -%\pagebreak +A basic winding macro for magnetic-circuit sketches and similar figures +is shown in \FR{Windings}. +For simplicity, the complete spline +is first drawn and then blanked in appropriate places using the background +(core) color (\verb!lightgray! for example, default \verb!white!). +\begin{figure}[h!t] + \vspace*{-\baselineskip}% +% \ifpdf\vspace*{-2\baselineskip}\else \vspace{-\baselineskip}\fi + \input Windings + \ifpdf\vspace*{-\baselineskip}\else\vspace*{-1ex}\fi + \caption{The {\tt winding(L|R, diam, pitch, turns, core wid, core color)} + macro draws a coil with axis along the current drawing direction. + Terminals {\tt T1} and {\tt T2} are defined. + Setting the first argument to {\tt R} draws a right-hand winding.} + \label{Windings} + \end{figure} + A macro for drawing headers is in \FR{Headers}, and some experimental connectors are shown in \FR{Conn} and \FR{Pconn}. -The {\tt tstrip} macro allows {\sl key}{\tt =}{\sl value}{\tt ;} arguments +The {\tt tstrip} macro allows ``{\sl key}{\tt =}{\sl value}{\tt ;}'' arguments \begin{figure}[h!t] \ifpdf\vspace*{-0.5\baselineskip}\fi% \input Headers @@ -1655,21 +1664,23 @@ for width and height. \label{Pconn} \end{figure} +\pagebreak \subsection{Semiconductors\label{Semiconductors:}}% \FR{Bip} shows the variants of bipolar transistor macro {\tt bi\_tr(\linespec,L|R,P,E)} which contains predefined internal locations {\sl E}, {\sl B}, {\sl C}. -The first argument defines the distance and direction -from {\sl E} to {\sl C,} with location determined by the enclosing -block as for other elements, and the base placed -\begin{figure}[h!b] +The first argument defines the distance and direction from {\sl E} +\begin{figure}[h!t] \ifpdf\vspace*{-0.5\baselineskip}\fi% \input Bip \ifpdf\vspace*{-0.5\baselineskip}\fi% - \caption{Bipolar transistor variants (current direction upward).} + \caption{Variants of bipolar transistor {\tt bi\_tr(\linespec,L|R,P,E)} + (current direction upward).} \label{Bip} \end{figure} +to {\sl C,} with location determined by the enclosing +block as for other elements, and the base placed to the left or right of the 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 @@ -1708,6 +1719,7 @@ 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 @@ -1748,6 +1760,19 @@ draws the element from position {\sl A} to position {\sl B} with label Some FETs with predefined internal locations {\sl S,} {\sl D,} and {\sl G} are also included, with similar arguments to those of {\tt bi\_tr,} as shown in \FR{fet}. +\begin{figure}[h!t] + \ifpdf\vspace*{-\baselineskip}\fi% + \input fet + \ifpdf\vspace*{-\baselineskip}\fi% + \caption{JFET, insulated-gate enhancement and depletion MOSFETs, + and simplified versions. + 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 + defined by omitting the substrate connection, and the second + defined using a wrapper macro.} + \label{fet} + \end{figure} In all cases the first argument is a linespec, and entering {\tt R} as the second argument orients the {\sl G} terminal to the right of the @@ -1765,21 +1790,8 @@ The obsolete letter {\tt L} is equivalent to {\tt dM} and has been kept temporarily for compatibility. This system allows considerable freedom in choosing or customizing components, as illustrated in \FR{fet}. -\begin{figure}[h!t] - \ifpdf\vspace*{-\baselineskip}\fi% - \input fet - \ifpdf\vspace*{-\baselineskip}\fi% - \caption{JFET, insulated-gate enhancement and depletion MOSFETs, - and simplified versions. - 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 - defined by omitting the substrate connection, and the second - defined using a wrapper macro.} - \label{fet} - \end{figure} -\pagebreak +%\pagebreak The number of possible semiconductor symbols is very large, so these macros must be regarded as prototypes. Often an element is a minor modification of existing elements. For example, @@ -1904,7 +1916,7 @@ By default, $N=2$ except for macros {\tt NOT\_gate} and {\tt BUFFER\_gate}, 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!t] +\begin{figure}[h!] \input Logic \caption{Basic logic gates. The input and output locations of a three-input NOR gate are shown. Inputs are negated by @@ -1932,7 +1944,6 @@ regardless of gate orientation, as in \FR{FF}. \end{figure} Beyond a default number (6) of inputs, the gates are given wings as in \FR{exVIII}. -\pagebreak 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\_}. @@ -1986,7 +1997,7 @@ but requires internal locations of the block to be referenced using \label{Buffer} \end{figure} -\pagebreak +%\pagebreak A good strategy for drawing complex logic circuits might be summarized as follows: \begin{itemize}\itemsep=0pt @@ -2027,16 +2038,19 @@ the very similar demultiplexer. \end{figure} \FR{FlipFlops} shows -the macro {\tt FlipFlop(D|T|RS|JK, {\sl label, boxspec})}, which is a +the macro {\tt FlipFlop(D|T|RS|JK, {\sl label, boxspec, pinlength})}, +which is a wrapper for the more general macro {\tt FlipFlopX(}{\sl boxspec, label, -leftpins, toppins, rightpins, bottompins}{\tt )}. +leftpins, toppins, rightpins, bottompins, pinlength}{\tt )}. \begin{figure}[h!t] \input FlipFlop \caption{The {\tt FlipFlop} and {\tt FlipFlopX} macros, with variations.} \label{FlipFlops} \end{figure} +The first argument modifies the box (labelled Chip) default specification. Each of arguments 3 to 6 is null or a string of {\sl pinspecs} separated -by semicolons ({\tt;}). {\sl Pinspecs} are either empty (null) or of the form +by semicolons ({\tt;}). +A {\sl pinspec} is either empty (null) or of the form {\tt[}{\sl pinopts}{\tt]:[}{\sl label}{\tt[:}{\sl Picname}{\tt]]}. The first colon draws the pin. Pins are placed top to bottom or left to right along the box edges with @@ -2045,10 +2059,12 @@ by default; eg {\tt W1, W2, ..., N1, N2, ..., E1, ..., S1, ...} ; however, if {\tt:}{\sl Picname} is present in a {\sl pinspec} then {\sl Picname} replaces the default name. A {\sl pinspec} label is text placed at the pin base. Semicolons are -not allowed in labels; use eg \verb|\char59{}| instead, and to put a bar over +not allowed in labels; use e.g., \verb|\char59{}| instead. To put a bar over a label, use {\tt lg\_bartxt(}{\sl label}{\tt)}. The {\sl pinopts} are {\tt [L|M|I|O][N][E]} as for the \verb|lg_pin| macro. +Option argument 7 is the pin length in drawing units. +\pagebreak Customized gates can be defined simply. For example, the following code defines the custom flipflops in \FR{ShiftR}. \begin{figure}[h!t] @@ -2070,7 +2086,7 @@ illustrated in \FR{Dac}. The figure shows the default and predefined internal locations, the number of which can be specified as macro arguments. \begin{figure}[h!t] - \ifpdf\vspace*{-\baselineskip}\fi% +% \ifpdf\vspace*{-\baselineskip}\fi% \input Dac \ifpdf\vspace*{-\baselineskip}\fi% \caption{The {\tt dac({\sl width,height},nIn,nN,nOut,nS)} @@ -2081,7 +2097,6 @@ of which can be specified as macro arguments. In addition to the logic gates described here, some experimental IC chip diagrams are included with the distributed example files. -\pagebreak \xection{Element and diagram scaling\label{Scaling:}} There are several issues related to scale changes. You may wish to use @@ -2220,6 +2235,7 @@ to defer macro expansion. Macro arguments are referenced inside a macro by number; thus {\tt \$1} refers to the first argument. A few examples will be given. +\pagebreak %\enlargethispage{\baselineskip} %\noindent\hbox{}\\ {\bf Example 1:} %\par\noindent {\bf Example 1:} @@ -2227,9 +2243,9 @@ A few examples will be given. Custom two-terminal elements can often be defined by writing a wrapper for an existing element. For example, an enclosed thermal switch can be defined as shown in \FR{Thermal}. -\begin{figure}[h!] +\begin{figure}[h!t] \parbox{4.2in}{\tt define(`thermalsw',\hfill\break - \hbox{}\space`dswitch(`\$1',`\$2',WDdBT)\hfill\break + \hbox{}\space`dswitch(`\$1',`\$2',WDdBTh)\hfill\break \hbox{}\space\space circle rad distance(M4T,last line.c) at last line.c ') }% \hfill\raise-0.15in\hbox{\input Thermal } @@ -2252,6 +2268,7 @@ a subcircuit that is replicated several times to generate \FR{Tline}. \label{Tline} \end{figure} +\pagebreak \Example{3} %\par\noindent {\bf Example 3:} Composite elements containing several basic elements may be diff --git a/graphics/circuit_macros/doc/defines.tex b/graphics/circuit_macros/doc/defines.tex index 6b8f615fe2..8e21bba0ec 100644 --- a/graphics/circuit_macros/doc/defines.tex +++ b/graphics/circuit_macros/doc/defines.tex @@ -287,9 +287,9 @@ 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|T|TS)} +\macrodef{cbreaker}{cbreaker}{(\linespec,L|R,D|Th|TS)} {cct} - {circuit breaker to left or right, {\tt D}=with dots; {\tt T}=thermal; + {circuit breaker to left or right, {\tt D}=with dots; {\tt Th}=thermal; {\tt TS}=squared thermal\seesect{Twoterminal:}} \macrodef{ccoax}{ccoax}{(at {\sl location}, M|F, {\sl diameter})} {cct} @@ -318,9 +318,26 @@ {\tt R}=reversed polarity\seesect{Twoterminal:}} \macrodef{contact}{contact}{({\sl chars})} {cct} - {single-pole contact: {\tt P}= three position, {\tt O}= normally open, - {\tt C}= normally closed, {\tt I}= circle contacts, {\tt R}= right - orientation + {single-pole contact: + {\tt O}= normally open, + {\tt C}= normally closed (default), + {\tt I}= open circle contacts, + {\tt P}= three position, + {\tt R}= right orientation, + {\tt T}= T contacts, + {\tt U}= U contacts + \seesect{Composite:}} +\macrodef{contacts}{contacts}{({\sl count, chars})} + {cct} + {multiple ganged single-pole contacts: + {\tt P}= three position, + {\tt O}= normally open, + {\tt C}= normally closed, + {\tt D}= dashed ganging line over contact armatures + {\tt I}= open circle contacts, + {\tt R}= right orientation, + {\tt T}= T contacts, + {\tt U}= U contact lines parallel to drawing direction \seesect{Composite:}} \macrodef{contline}{contline}{({\sl line})} {gen} @@ -526,7 +543,7 @@ B|CR|D|G|L|LE[R]|P[R]|S|Sh|T|V|v|w|Z|chars,% label},{\sl label},{\sl chars})} {cct} {general triple label; {\sl chars:} - X displacement is from the centre of the last + $x$ (drawing direction) displacement is from the centre of the last line rather than the centre of the last {\tt [ ]}; L,R,A,B align labels ljust, rjust, above, or below (absolute) respectively \seesect{Labels:}} @@ -591,29 +608,30 @@ B|CR|D|G|L|LE[R]|P[R]|S|Sh|T|V|v|w|Z|chars,% {cct} {SPST switch left or right, W=baseline, B=contact blade, dB=contact blade to the right of drawing direction, - K=vertical closing contact line, + Bm = mirror contact blade, + Bo = contact blade more widely open, + Cb = circuit-breaker function, + Co = contactor function, C = external operating mechanism, D = circle at contact and hinge, (dD = hinge only, uD = contact only) E = emergency button, - EL = early close - (or late open), + EL = early close (or late open), LE = late close (or early open), F = fused, H = time delay closing, uH = time delay opening, - HH = time delay - opening and closing, - K = vertical closing contact, + HH = time delay opening and closing, + K=vertical closing contact line, L = limit, M = maintained (latched), MM = momentary contact on make, MR = momentary contact on release, - MMR = momentary contact - on make and release, + MMR = momentary contact on make and release, O = hand operation button, P = pushbutton, - T = thermal control linkage, + Th = thermal control linkage, + Tr = tripping, Y = pull switch, Z = turn switch \seesect{Twoterminal:}} @@ -696,7 +714,8 @@ B|CR|D|G|L|LE[R]|P[R]|S|Sh|T|V|v|w|Z|chars,% \macrodef{fitcurve}{fitcurve}{(V,n,[e.g. dotted],m (default 0))} {gen} {Draw a spline through positions V[m], $ldots$ V[n]: Works only with dpic.} -\macrodef{FlipFlop}{FlipFlop}{(D|T|RS|JK,{\sl label},{\sl boxspec})} +\macrodef{FlipFlop}{FlipFlop}{(D|T|RS|JK,{\sl label},{\sl boxspec},% + {\sl pinlength})} {log} {flip-flops, {\sl boxspec}=e.g.\ ht x wid y \seesect{Logicgates:}} @@ -715,10 +734,12 @@ B|CR|D|G|L|LE[R]|P[R]|S|Sh|T|V|v|w|Z|chars,% in future}. Similar to {\tt FlipFlop6}.} \macrodef{FlipFlopX}{FlipFlopX}{({\sl boxspec, label, leftpins, toppins, - rightpins, bottompins})} + rightpins, bottompins, pinlength})} {log} - {General flipflop. Each of args 3 to 6 is null or a string of {\sl pinspecs} - separated by semicolons ({\tt;}). {\sl Pinspecs} are either empty + {General flipflop. + Arg 1 modifies the box (labelled Chip) default specification. + Each of args 3 to 6 is null or a string of {\sl pinspecs} + separated by semicolons ({\tt;}). A {\sl Pinspec} is either empty or of the form {\tt[}{\sl pinopts}{\tt]:[}{\sl label}{\tt[:}{\sl Picname}{\tt]]}. The first colon draws the pin. @@ -729,12 +750,13 @@ B|CR|D|G|L|LE[R]|P[R]|S|Sh|T|V|v|w|Z|chars,% replaces the default name. A {\sl pinspec} label is text placed at the pin base. Semicolons are not allowed in labels; use, e.g., {\tt \char92{}char59\char123\char125} - instead, - and to put a bar over a label, use {\tt lg\_bartxt(}{\sl label}{\tt)}. + instead. + To put a bar over a label, use {\tt lg\_bartxt(}{\sl label}{\tt)}. The {\sl pinopts} are {\tt[N|L|M][E]}; {\tt N}=pin with not circle; {\tt L}=active low out; {\tt M}=active low in; - {\tt E}=edge trigger \seesect{Logicgates:}} + {\tt E}=edge trigger \seesect{Logicgates:}. Optional arg 7 is the length + of pins} \macrodef{for\_}{for_}{({\sl start},{\sl end},{\sl increment},`{\sl actions}')} {gen} {integer for loop with index variable {\tt m4x} \seesect{Looping:}} @@ -1259,6 +1281,9 @@ nw,nn,ne,ns,pin lgth,style, other commands})} \macrodef{pc\_\_}{pc__}{} {gen} {absolute points} +\macrodef{pvcell}{pvcell}{({\sl linespec, width, height})} + {cct} + {PV cell} \macrodef{px\_\_}{px__}{} {gen} {absolute SVG screen pixels} @@ -1338,15 +1363,37 @@ nw,nn,ne,ns,pin lgth,style, other commands})} {\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 T}=thermal. + {\tt R}=drawn right, {\tt Th}=thermal. Argument 3={\tt [L|R]} is deprecated but works for backward compatibility \seesect{Composite:}} -\macrodef{resetdir\_)}{resetdir_)}{} +\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; + {\tt EL}=electronic + \seesect{Composite:}} +\macrodef{resetdir\_}{resetdir_)}{} {gen} {resets direction set by {\tt setdir\_}} \macrodef{resetrgb}{resetrgb}{} diff --git a/graphics/circuit_macros/doc/md.tex b/graphics/circuit_macros/doc/md.tex deleted file mode 100644 index 7d195339e1..0000000000 --- a/graphics/circuit_macros/doc/md.tex +++ /dev/null @@ -1,59 +0,0 @@ -% -\newdimen{\leftwid}\setlength{\leftwid}{2in} -\newdimen{\libwid}\setlength{\libwid}{0.5in} -\newdimen\rightwid -\setlength{\rightwid}{\textwidth} -\addtolength{\rightwid}{-\leftwid} -\addtolength{\rightwid}{-\libwid} -% -\newbox\Defbox -%\iffalse% original macrodef: -%\newcommand{\macrodef}[3]{\setbox\Defbox=\hbox{\tt #1}% -% \ifdim\wd\Defbox>\textwidth% -% \setbox\Defbox=\hbox{\parbox{\textwidth}{\tt #1}}\fi -% \ifdim\wd\Defbox>\leftwid% -% \box\Defbox\hfill\break\hspace*{\leftwid}% -% \else\hbox to \leftwid{\box\Defbox\hfill}\fi% -% \hbox to \libwid{#2\hfill}\parbox[t]{\rightwid}% -% {\raggedright #3}\vspace{\parsep}\\} -%\fi - -\newcommand{\macx}[2]{% - \phantomsection\pdfbookmark[subsection]{#1}{#2}#1} - -\newcommand{\macrodef}[5]{\begin{samepage}% -\phantomsection\pdfbookmark[subsection]{#1}{#2}% -\setbox\Defbox=\hbox{\tt #1#3}% - \ifdim\wd\Defbox>\textwidth% - \setbox\Defbox=\hbox{\parbox{\textwidth}{\tt #1#3}}\fi - \ifdim\wd\Defbox>\leftwid% - \box\Defbox\hfill\break\hspace*{\leftwid}% - \else\hbox to \leftwid{\box\Defbox\hfill}\fi% - \hbox to \libwid{#4\hfill}\parbox[t]{\rightwid}% - {\raggedright #5}\end{samepage}\vspace{\parsep}\\} - -\newcommand{\seesect}[1]{ (see \SR{#1})} - - -\vspace{\abovedisplayskip} -\noindent -\macrodef{Along\_}{Along_}{({\sl LinearObj,distance,}[R])} - {gen} - {Distance arg2 (default all the way) along a linear object - from {\tt .start} to {\tt .end} - (from {\tt .end} to {\tt .start} if arg3={\tt R}) } -\macrodef{AND\_gate}{AND_gate}{({\sl n},N)} - {log} - {basic `and' gate, 2 or {\sl n\/} inputs; {\tt N}=negated input. - Otherwise, arg1 can be a sequence of letters {\tt P|N} - to define normal or negated inputs - \seesect{Logicgates:}} -\macrodef{AND\_gen}{AND_gen}{($n$,{\sl chars},[{\sl wid},[{\sl ht}]])} - {log} - {general AND gate: $n$=number of inputs $(0\leq n\leq 16)$; - {\sl chars:} - B=base and straight sides; A=Arc; - [N]NE,[N]SE,[N]I,[N]N,[N]S=inputs or circles; - [N]O=output; C=center. - Otherwise, arg1 can be a sequence of letters {\tt P|N} - to define normal or negated inputs.} diff --git a/graphics/circuit_macros/doc/relaycoil.m4 b/graphics/circuit_macros/doc/relaycoil.m4 new file mode 100644 index 0000000000..b3273794cd --- /dev/null +++ b/graphics/circuit_macros/doc/relaycoil.m4 @@ -0,0 +1,40 @@ +.PS +# relaycoil.m4 +cct_init + + spc = dimen_/3 +{ relaycoil; S: "\tt re{}laycoil" at last [].s+(0,-20bp__) + { "\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) + { thinlines_ + spline <- from K.A1 left 7bp__ then up 4bp__ left 4bp__; "\sl A1" rjust + arrow <- from K.A2 left 10bp__; "\sl A2" rjust + spline <- from K.A3 left 7bp__ then down 4bp__ left 4bp__; "\sl A3" rjust + spline <- from K.B1 right 7bp__ then up 4bp__ right 4bp__; "\sl B1" ljust + arrow <- from K.B2 right 10bp__; "\sl B2" ljust + spline <- from K.B3 right 7bp__ then down 4bp__ right 4bp__; "\sl B3" ljust + thicklines_ + } + relaycoil(AXSR) with .nw at last [].ne+(spc*5,0); "\tt (AXSR)" at (last [],S) + { "\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(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) + } +{ + move down_ 3/4; right_ + relaycoil(HS); S: "\tt (HS)" at last [].s+(0,-12bp__) + relaycoil(NAC) with .nw at last [].ne+(spc,0); "\tt (NAC)" at (last [],S) + relaycoil(AC) with .nw at last [].ne+(spc,0); "\tt (AC)" at (last [],S) + relaycoil(ML) with .nw at last [].ne+(spc,0); "\tt (ML)" at (last [],S) + relaycoil(PO) with .nw at last [].ne+(spc,0); "\tt (PO)" at (last [],S) + relaycoil(RM) with .nw at last [].ne+(spc,0); "\tt (RM)" at (last [],S) + 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) + } + +.PE diff --git a/graphics/circuit_macros/doc/tran.m4 b/graphics/circuit_macros/doc/tran.m4 deleted file mode 100644 index 3314be47e0..0000000000 --- a/graphics/circuit_macros/doc/tran.m4 +++ /dev/null @@ -1,5 +0,0 @@ -.PS -# `tran.m4' -cct_init -include(tranbody.m4) -.PE diff --git a/graphics/circuit_macros/doc/tran.tex b/graphics/circuit_macros/doc/tran.tex deleted file mode 100644 index a894de26d5..0000000000 --- a/graphics/circuit_macros/doc/tran.tex +++ /dev/null @@ -1,76 +0,0 @@ -% tran.m4 -\begin{tikzpicture}[scale=2.54] -% dpic version 2014.03.24 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.2,0)\dpicstop -\dpicdraw (0.2,0.333333) - --(0.2,0.291667)\dpicstop -\dpicdraw (0.2,0.291667) - --(0.194444,0.291667)\dpicstop -\dpicdraw (0.2,0.291667) - ..controls (0.217259,0.291667) and (0.23125,0.277676) - ..(0.23125,0.260417) - ..controls (0.23125,0.243158) and (0.217259,0.229167) - ..(0.2,0.229167)\dpicstop -\dpicdraw (0.2,0.229167) - --(0.194444,0.229167)\dpicstop -\dpicdraw (0.2,0.229167) - ..controls (0.217259,0.229167) and (0.23125,0.215176) - ..(0.23125,0.197917) - ..controls (0.23125,0.180658) and (0.217259,0.166667) - ..(0.2,0.166667)\dpicstop -\dpicdraw (0.2,0.166667) - --(0.194444,0.166667)\dpicstop -\dpicdraw (0.2,0.166667) - ..controls (0.241667,0.166667) and (0.241667,0.104167) - ..(0.2,0.104167)\dpicstop -\dpicdraw (0.2,0.104167) - --(0.194444,0.104167)\dpicstop -\dpicdraw (0.2,0.104167) - ..controls (0.241667,0.104167) and (0.241667,0.041667) - ..(0.2,0.041667)\dpicstop -\dpicdraw (0.2,0.041667) - --(0.194444,0.041667)\dpicstop -\dpicdraw (0.2,0.041667) - --(0.2,-0)\dpicstop -\dpicdraw (0.272917,0.291667) - --(0.272917,0.041667)\dpicstop -\dpicdraw (0.335417,0.291667) - --(0.335417,0.041667)\dpicstop -\dpicdraw (0.408333,0.072917) - --(0.408333,0.072917)\dpicstop -\dpicdraw (0.408333,0.072917) - --(0.413889,0.072917)\dpicstop -\dpicdraw (0.408333,0.072917) - ..controls (0.366667,0.072917) and (0.366667,0.135417) - ..(0.408333,0.135417)\dpicstop -\dpicdraw (0.408333,0.135417) - --(0.413889,0.135417)\dpicstop -\dpicdraw (0.408333,0.135417) - ..controls (0.391074,0.135417) and (0.377083,0.149408) - ..(0.377083,0.166667) - ..controls (0.377083,0.183926) and (0.391074,0.197917) - ..(0.408333,0.197917)\dpicstop -\dpicdraw (0.408333,0.197917) - --(0.413889,0.197917)\dpicstop -\dpicdraw (0.408333,0.197917) - ..controls (0.366667,0.197917) and (0.366667,0.260417) - ..(0.408333,0.260417)\dpicstop -\dpicdraw (0.408333,0.260417) - --(0.413889,0.260417)\dpicstop -\dpicdraw (0.408333,0.260417) - --(0.408333,0.260417)\dpicstop -\dpicdraw (0.2,0.333333) - --(0,0.333333)\dpicstop -\dpicdraw (0.408333,0.260417) - --(0.608333,0.260417) - --(0.608333,0.360417)\dpicstop -\dpicdraw (0.408333,0.072917) - --(0.608333,0.072917) - --(0.608333,-0.027083)\dpicstop -\end{tikzpicture} |