summaryrefslogtreecommitdiff
path: root/Master/texmf-dist
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2024-12-01 21:06:04 +0000
committerKarl Berry <karl@freefriends.org>2024-12-01 21:06:04 +0000
commit48bb6850f5b87c15798d42952f37f6762088aa1b (patch)
treeac154aa708ce438e16bcfa644d08ebf572de2804 /Master/texmf-dist
parent08655b3b049a667aac0c5dc5c590aa1bdeff2391 (diff)
circuit-macros (1dec24)
git-svn-id: svn://tug.org/texlive/trunk@73012 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist')
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/CHANGES38
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/Copying2
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/README9
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/darrow.m42
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/doc/Circuit_macros.pdfbin1135017 -> 1142252 bytes
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/doc/JackMan.m476
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/doc/Version.tex2
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/doc/arrowex.m412
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/doc/body.tex92
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/doc/defines.tex78
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/dpictools.pic16
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/examples/Capacitors.m42
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/examples/Fuses.m49
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/examples/Jack.m474
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/examples/LT3724.m489
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/examples/Loglog.m459
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/examples/Makefile16
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/examples/OneLine.m4 (renamed from Master/texmf-dist/doc/latex/circuit-macros/examples/extras/OneLine.m4)0
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/examples/Shapedefs.m4226
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/examples/UNO.m412
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/examples/cbresistor.m42
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/examples/diamond.m454
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/AlogixDPV.m42
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/CsourceDPV.m41
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/JackDPV.m4105
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/LT3724DPV.m488
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/LT3757DPV.m4274
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/Makefile3
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/SwitchesDPV.m42
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/UNODPV.m412
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/diamondDPV.m460
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/examplesDPV.htmx8
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/examplesDPVs.htmx3
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/icsDPV.m4125
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/shapesDPV.m4154
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/examples/ex02.tex1573
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/examples/ex06.m455
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/examples/examples.pdfbin1936421 -> 1914597 bytes
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/examples/examples.tex27
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/examples/extras/Chuck.m42
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/examples/extras/HSVS.m4 (renamed from Master/texmf-dist/doc/latex/circuit-macros/examples/extras/Shadow.m4)0
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/examples/extras/OpAmpFilter.m41
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/examples/extras/Planes.m4335
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/examples/extras/README_extras2
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/examples/extras/ex02.m4 (renamed from Master/texmf-dist/doc/latex/circuit-macros/examples/ex02.m4)0
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/examples/files.tex59
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/examples/ics.m492
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/examples/mf/cct.mf2
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/examples/shapes.m4156
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/examples/xfig/xfiglib.fig2
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/gpic.m42
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/lib3D.m42
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/libSLD.m42
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/libcct.m4139
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/libgen.m4155
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/liblog.m430
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/mfpic.m42
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/mpost.m42
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/pdf.m42
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/pgf.m42
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/postscript.m42
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/psfrag.m42
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/pstricks.m42
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/svg.m45
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/xfig.m42
65 files changed, 3276 insertions, 1088 deletions
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/CHANGES b/Master/texmf-dist/doc/latex/circuit-macros/CHANGES
index efb7f7a0e76..5be074405ca 100644
--- a/Master/texmf-dist/doc/latex/circuit-macros/CHANGES
+++ b/Master/texmf-dist/doc/latex/circuit-macros/CHANGES
@@ -1,5 +1,8 @@
CHANGES
+Version 10.7: Minor changes and additions to ics.m4 and macros polygon,
+ jack, LH_symbol, LT_symbol, opamp, amp, sarrow, dashline. Extra
+ examples.
Version 10.6: New macro geiger. Corrected dpv .txt files.
Tweaked macros ColoredV, ShadeObject, ebox, shadowed, shadedball, addtaps.
Options for macros delay, resistor, source, relaycoil. List of macros
@@ -83,9 +86,8 @@ Version 8.2: Tweaks to round, bi_tr, bi_trans, Darlington, along_. New
Version 8.1: Additions to dpictools.pic. New macros parallel_, rgbstring,
series_, stackdo_, Vsprod, sbs, scs, sus. Options for diode. Thyristor
options and minor changes of functionality. Bugfix in winding macro.
-Version 8.0: New options for capacitor, cbreaker, diode, inductor,
-lswitch, Mux,
- resistor, rotbox, transformer. New macros addtaps, binary_, Demux,
+Version 8.0: New options for capacitor, cbreaker, diode, inductor, lswitch,
+ Mux, resistor, rotbox, transformer. New macros addtaps, binary_, Demux,
Header, HeaderPin, hex_digit, hexadecimal_, Pr_xy, Pr_xz, Pr_yz, SQUID,
KelvinR, FTcap, tconn, and tapped. Tweaked setrgb for svg output.
Generalized setview in lib3D.
@@ -94,8 +96,7 @@ Version 7.9: Added accessibility features to the documentation.
simplified expressions. New macros savem4dir, restorem4dir. Options for
vperp and Vperp. Bug fix in source macro. Tweaked stacksplit_. Removed
a name clash between libcct and liblog.
-Version 7.8: Logic gate options for arbitrary negated inputs; lg_pin
-options.
+Version 7.8: Logic gate options for arbitrary negated inputs; lg_pin options.
New macro FlipFlopX for simplicity and generality; new macros
Cintersect, LCintersect, LCtangent, stacksplit_; modified Loopover_.
Version 7.7: SVG macro tweaks. Tweaked BOX_gate and bugfix in IOdefs in
@@ -112,8 +113,7 @@ Version 7.5: Usage has been simplified by making the initialization macros
in composite macros. Bugfix in calls to BUFFER_gen. Tweaked Point_
for simpler output for common arguments. Reordered the arguments of
round for consistency.
-Version 7.4: New macro lthick. Simplified shadebox. The ifroff macro
-renamed
+Version 7.4: New macro lthick. Simplified shadebox. The ifroff macro renamed
to iftpic. New configuration file m4defaults.m4. Reworked darrow
library for consistency with solid lines and arrows; new macro darc and
wrappers Darc, Darrow, Dline; old version included in olddarrow.m4 to
@@ -150,8 +150,7 @@ Version 6.4: New macros Equidist3, f_box, rs_box, Darlington, View3D.
Options for diode, inductor, transformer, consource. Moved arrowhead
initialization in pstricks.m4 and libcct.m4 for for more flexibility
with diagrams embedded in latex files.
-Version 6.3: New options for mosfet, diode, earphone. Better color
-support.
+Version 6.3: New options for mosfet, diode, earphone. Better color support.
Fixed system-dependent OR_gate problems. New macro cintersect.
Version 6.2: Replaced scr with a variant of thyristor. Bug fix in
bi_trans. Options for source.
@@ -160,15 +159,13 @@ Version 6.1: New macros ttmotor, thyristor. Options for source, bi_trans,
Version 6.0: TikZ PGF compatibility. Added transformer labels, optional
FlipFlop labels. New macros dswitch, winding. Tweaked nport, source,
bi_trans, AND_gen, OR_gen, sinusoid, resistor.
-Version 5.9: Simplified internal flags for pic processor and
-postprocessor.
+Version 5.9: Simplified internal flags for pic processor and postprocessor.
New antenna, cbreaker, dturn, and lbox macros. Several changes to
allow sprintf string arguments. New options for buzzer, capacitor,
dimension_, ebox, fuse, mosfet, source, and switch. Fix of drjust.
Better compatibility with pic macros. Numerous changes to
documentation.
-Version 5.8: Simplified installation. Revised and augmented logic-gate
-library.
+Version 5.8: Simplified installation. Revised and augmented logic-gate library.
Cleaner libgen macro output. Improved b_current, bi_trans, ground,
dtee. Dline and darrow corrected for gpic. New macros dashline,
m4xtract.
@@ -181,8 +178,7 @@ Version 5.6: Better MetaPost, PDFLaTeX, and xfig support. PDF examples.
microphone, buzzer. Negated logic gate inputs and IEEE box logic gates.
Version 5.5: New macros potentiometer, variable, igbt, tline. Optional
negated logic gate inputs. Options for diode, source.
-Version 5.4: New Mux, for_, arca. Reworked gate macros FlipFlop,
-AND_gate,
+Version 5.4: New Mux, for_, arca. Reworked gate macros FlipFlop, AND_gate,
OR_gate, NOT_gate. Improved lg_pintxt, boxdim, s_box, s_ht, s_wd,
s_dp, nport, resistor, opamp. Completely reworked bi_tr, mosfet;
deleted smosfet. Minor additions and changes to the manual.
@@ -198,13 +194,11 @@ Version 5.1: Signal-flow graph (directed graph) macros. More consistent
Modified ground, dimension_, par_, label macros, b_current, diode,
transformer. New macros gpar_, ujt, scr, contact, relay. Document
fixes and additions. Changes to examples for portability.
-Version 5.0: Macros fuse, lpop, sinc; dpic-only sinusoid and fitcurve
-macros.
+Version 5.0: Macros fuse, lpop, sinc; dpic-only sinusoid and fitcurve macros.
More robust mosfet, smosfet, b_current, bi_tr, j_fet, intersect_.
Editorial changes to the manual. Examples in Xfig version 3.2 format.
Web-based examples and updated links.
-Version 4.9: More robust NOT_gate. Function pmod(), macro shade().
-Tweaks
+Version 4.9: More robust NOT_gate. Function pmod(), macro shade(). Tweaks
to diode, dend, crossover. Newer manual and web references. Binary tree
and flowchart macros.
Version 4.8: More robust ebox, source, shadebox, gap. Modified d_fet and
@@ -212,8 +206,7 @@ Version 4.8: More robust ebox, source, shadebox, gap. Modified d_fet and
Bug fixes in Fector, transformer, BUFFER_gate and in sum_, abs_, neg_,
sign_ (!).
Version 4.7: Fixed the excess-space bug in boxdims.sty. Added Macros
-s_box,
- s_init, scale changes to make the package more metric-friendly.
+ s_box, s_init, scale changes to make the package more metric-friendly.
Reworked amp, integrator, opamp, diode, battery and a few other macros
for robustness and clarity. Minor document changes.
Version 4.6: Percent-signs at the end of pstricks-generated lines.
@@ -221,8 +214,7 @@ Version 4.6: Percent-signs at the end of pstricks-generated lines.
Version 4.5: Options for several 2-terminal macros. Minor bug fixes and
better robustness. Documents edited for friendlier PC installation
and use.
-Version 4.3: Macros pt__ and boxdim. Additions to the manual.
-More robust
+Version 4.3: Macros pt__ and boxdim. Additions to the manual. More robust
dimension_, tuned FlipFlop for xfig. PC installation information.
Version 4.2: Friendlier manual. New Xfig prototype file to allow correct
scaling. Cleaned up b_current, added line_leng. Changes and additions
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/Copying b/Master/texmf-dist/doc/latex/circuit-macros/Copying
index 7ec3b487d57..5e1ccde657d 100644
--- a/Master/texmf-dist/doc/latex/circuit-macros/Copying
+++ b/Master/texmf-dist/doc/latex/circuit-macros/Copying
@@ -1,4 +1,4 @@
-* Circuit_macros Version 10.6, copyright (c) 2024 J. D. Aplevich under *
+* Circuit_macros Version 10.7, copyright (c) 2024 J. D. Aplevich under *
* the LaTeX Project Public Licence in file Licence.txt. The files of *
* this distribution may be redistributed or modified provided that this *
* copyright notice is included and provided that modifications are clearly *
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/README b/Master/texmf-dist/doc/latex/circuit-macros/README
index 708d190f899..296fd6858e7 100644
--- a/Master/texmf-dist/doc/latex/circuit-macros/README
+++ b/Master/texmf-dist/doc/latex/circuit-macros/README
@@ -1,5 +1,5 @@
-* Circuit_macros Version 10.6, copyright (c) 2024 J. D. Aplevich under *
+* Circuit_macros Version 10.7, copyright (c) 2024 J. D. Aplevich under *
* the LaTeX Project Public Licence in file Licence.txt. The files of *
* this distribution may be redistributed or modified provided that this *
* copyright notice is included and provided that modifications are clearly *
@@ -118,7 +118,8 @@ USAGE
near-immediate viewing of the results, three windows can be kept open:
one in which to edit the source, one to process the source and produce
postscript or pdf, and a viewer such as gv or GSview 5.0. A window
- displaying the manual is also useful for composing a significant diagram.
+ displaying the manual is also useful when you are composing a significant
+ diagram.
INSTALLATION AND TESTING: See the INSTALL file.
@@ -239,6 +240,10 @@ INTEGRATION WITH OTHER TOOLS:
A set of examples and hints intended for his colleagues has been
produced by Alan Robert Clark at http://ytdp.ee.wits.ac.za/cct.html
+ Examples and hints for logic circuits are at:
+ https://aprikose.sumomo.ne.jp/madchemiker/
+ Invoke this site using Google translate if you do not read Japanese.
+
A video "Drawing Circuit Diagrams with Circuits Macros" by James Green
showing how to use Circuit_macros with his setup is at
https://www.youtube.com/watch?time_continue=53&v=pFRIBvUJHS4
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/darrow.m4 b/Master/texmf-dist/doc/latex/circuit-macros/darrow.m4
index da57311215a..47553b59923 100644
--- a/Master/texmf-dist/doc/latex/circuit-macros/darrow.m4
+++ b/Master/texmf-dist/doc/latex/circuit-macros/darrow.m4
@@ -1,7 +1,7 @@
divert(-1)
darrow.m4 Macros for double lines and arrows
-* Circuit_macros Version 10.6, copyright (c) 2024 J. D. Aplevich under *
+* Circuit_macros Version 10.7, copyright (c) 2024 J. D. Aplevich under *
* the LaTeX Project Public Licence in file Licence.txt. The files of *
* this distribution may be redistributed or modified provided that this *
* copyright notice is included and provided that modifications are clearly *
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/doc/Circuit_macros.pdf b/Master/texmf-dist/doc/latex/circuit-macros/doc/Circuit_macros.pdf
index f20e440b8c6..5e12cb00fb3 100644
--- a/Master/texmf-dist/doc/latex/circuit-macros/doc/Circuit_macros.pdf
+++ b/Master/texmf-dist/doc/latex/circuit-macros/doc/Circuit_macros.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/doc/JackMan.m4 b/Master/texmf-dist/doc/latex/circuit-macros/doc/JackMan.m4
index b9a005d2794..c55a4f40726 100644
--- a/Master/texmf-dist/doc/latex/circuit-macros/doc/JackMan.m4
+++ b/Master/texmf-dist/doc/latex/circuit-macros/doc/JackMan.m4
@@ -1,30 +1,24 @@
.PS
-# `Jack.m4'
+# `JackMan.m4'
cct_init
+# https://tex.stackexchange.com/questions/720858/is-there-a-tikz-or-circuitikz-headphone-jack-connector-diagram
P: [
P1: plug
- "\sl A" wid 0.1 at P1.A rjust
- "\sl B" at P1.B rjust
+ foreach_(`Y',`"\sl Y" wid 0.1 at P1.Y rjust',A,B)
"\sl TB" at P1.TB ljust above
"\sl TA" at P1.TA ljust below
+
P2: plug(,R) with .B at P1.A+(0.85,0)
- "\sl A" wid 0.1 at P2.A rjust
- "\sl B" at P2.B rjust
-# P3: plug(L) with .A at P2.A+(1,0)
-# "\sl A" wid 0.1 at P3.A ljust
-# "\sl B" at P3.B ljust
+ foreach_(`Y',`"\sl Y" wid 0.1 at P2.Y rjust',A,B)
+
P4: plug(,3) with .A at P2.B+(0.85,0)
- "\sl A" at P4.A rjust
- "\sl B" at P4.B rjust
- "\sl C" at P4.C rjust
+ foreach_(`Y',`"\sl Y" at P4.Y rjust',A,B,C)
+
P5: plug(L,3R) with .A at P4.A+(1,0)
- "\sl A" wid 0.1 at P5.A ljust
- "\sl B" at P5.B ljust
- "\sl C" at P5.C ljust
+ foreach_(`Y',`"\sl Y" wid 0.1 at P5.Y ljust',A,B,C)
`"\tt plug"' below at P1.s+(0,-0.1)
`"\tt plug(,R)"' below at P2.s+(0,-0.1)
-# `"\tt plug(L)"' below at P3.s+(0,-0.1)
`"\tt plug(,3)"' below at P4.s+(-0.1,-0.1)
`"\tt plug(L,3R)"' below at P5.s+(0.1,-0.1)
]
@@ -34,45 +28,33 @@ L: [ right_
thinlines_
"\sl L" wid 0.1 rjust at J1.L
arrow <- right 0.1 from J1.F; "\sl F" ljust
- arrow <- down 0.1 from J1.G then left 0.1 ; "\sl G" rjust
+ arrow <- down 0.1 left 0.1 from J1.G ; "\sl G" rjust
+ arrow <- up 0.1 left 0.1 from J1.H ; "\sl H" rjust
thicklines_
- J2:[K2: jack(,LMBS) #with .F at J1.F+(1.2,0)
- thinlines_
- "\sl L" rjust at K2.L
- arrow <- from K2.LM left 0.25; "\sl LM" wid 0.18 rjust
- arrow <- from K2.LB left 0.25; "\sl LB" rjust
- "\sl S" rjust at K2.S
- thicklines_ ] with .K2.F at J1.F+(1.2,0)
- J3: jack(L,RLS) with .F at J2.K2.F+(0.4,0)
- thinlines_
+
+ J3: jack(L,RLS) with .F at J1.F+(0.4,0)
"\sl L" ljust at J3.L
"\sl S" ljust at J3.S
- thicklines_
- J4: jack(L,RLBLMLMS) with .F at J3.F+(1.1,0)
- thinlines_
- "\sl L1" ljust at J4.L1
- arrow <- right 0.3 from J4.LM1; "\sl LM1" ljust
- "\sl L2" ljust at J4.L2
- arrow <- right 0.3 from J4.LM2; "\sl LM2" wid 0.2 ht 11pt__ ljust
- "\sl S" ljust at J4.S
- "\sl L" ljust at J4.L
- arrow <- right 0.2 from J4.LB ; "\sl LB" ljust
- right_
- J5: jack(,RSBSMLB) with .F at J4.F+(1.95,0)
+
+ J2: jack(,LMBS) with .F at J3.F+(1.5,0)
thinlines_
- "\sl L" rjust at J5.L
- "\sl S" rjust at J5.S
- "\sl S1" rjust at J5.S1
- arrow <- left 0.3 from J5.SM1; "\sl SM1" rjust
- spline 0.5 <- left 0.25 then left 0.1 down 0.05 from J5.LB; "\sl LB" rjust
- spline 0.5 <- left 0.25 then left 0.1 up 0.05 from J5.SB; "\sl SB" rjust
+ "\sl L" rjust at J2.L
+ arrow <- from J2.LM left 0.25; "\sl LM" wid 0.18 rjust
+ arrow <- from J2.LB left 0.25; "\sl LB" rjust
+ "\sl S" rjust at J2.S
thicklines_
+ J11: jack(,LMBSX) with .w at last [].e+(0.5,0)
+ foreach_(`Y',`"\small\sl Y" rjust at J11.Y.w', L,LM,LB,S,G)
+
+ J8: jack(,XLLBSSBC) with .sw at last [].se+(0.75,0)
+ foreach_(`Y',`"\small\sl Y" rjust at J8.Y.w', L,L1,LB1,S,S1,SB1,G,C)
+
`"\tt jack"' ht 0.15 below at J1.s+(0,-0.15)
- `"\tt jack(,LMBS)"' below at (J2,last "")
+ `"\tt ..(,LMBS)"' below at (J2,last "")
`"\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)
+ `"\tt ..(,LMBSX)"' below at (J11,last "")
+ `"\tt ..(,XLLBSSBC)"' below at (J8, last "")
+] with .nw at last [].sw + (0,0.1)
.PE
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/doc/Version.tex b/Master/texmf-dist/doc/latex/circuit-macros/doc/Version.tex
index 0c666044896..5b31954edc6 100644
--- a/Master/texmf-dist/doc/latex/circuit-macros/doc/Version.tex
+++ b/Master/texmf-dist/doc/latex/circuit-macros/doc/Version.tex
@@ -1 +1 @@
-Version 10.6
+Version 10.7
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/doc/arrowex.m4 b/Master/texmf-dist/doc/latex/circuit-macros/doc/arrowex.m4
index 2ffd5121075..1284c1e18ab 100644
--- a/Master/texmf-dist/doc/latex/circuit-macros/doc/arrowex.m4
+++ b/Master/texmf-dist/doc/latex/circuit-macros/doc/arrowex.m4
@@ -1,9 +1,10 @@
.PS
# arrowex.m4
+# https://tex.stackexchange.com/questions/727004/how-do-i-create-hook-arrows-in-tikz-diagram-instead-of-plain-arrows
gen_init
movewid = 1
- moveht = 13bp__
+ moveht = 12bp__
ifdpic(
`{{ arrow -> 0 }; move; "\tt arrow -> 0" ljust }
@@ -21,9 +22,18 @@ gen_init
{{ sarrow(,type=Plain)}; move;
{"`\tt arrowwid=8bp\_\_; arrowht=10bp\_\_; sarrow(,type=Plain)'" ljust }}
move down_; right_
+ {{ sarrow(,type=PP;hook=R;)}; move;
+ {"`\tt sarrow(,type=PP;hook=R;)'" ljust }}
+ move down_; right_
{{ sarrow(,type=Open)}; move;
{"`\tt sarrow(,type=Open)'" ljust }}
move down_; right_
+ {{ sarrow(,type=DI;head=colored "blue")}; move;
+ {"`\tt sarrow(,type=DI;head=colored \"blue\")'" ljust }}
+ move down_; right_
+ {{ sarrow(,type=Open;head=fill_(0))}; move;
+ {"`\tt sarrow(,type=Open;head=fill\_(0))'" ljust }}
+ move down_; right_
{{ sarrow(,type=Crow;shaft=dashed)}; move
{"`\tt sarrow(,type=Crow;shaft=dashed)'" ljust }}
move down_; right_
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/doc/body.tex b/Master/texmf-dist/doc/latex/circuit-macros/doc/body.tex
index 79827bb2e4d..ce699c42cef 100644
--- a/Master/texmf-dist/doc/latex/circuit-macros/doc/body.tex
+++ b/Master/texmf-dist/doc/latex/circuit-macros/doc/body.tex
@@ -82,7 +82,7 @@ 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
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:}.
+makefile, or for simple documents, by hand as described in~\SR{Quickstart:}.
The diagram source file is processed as illustrated in
\FR{Flowdiag}. A configuration file is read by \Mfour,
@@ -130,11 +130,12 @@ labeled circuits.
% \vspace*{-\baselineskip}%
\caption{The file {\tt quick.m4} and resulting diagram.
There are several ways of drawing the same picture; for example,
- nodes (example: {\tt Origin: Here}) can be defined and circuit branches
- drawn between them; or absolute coordinates can be used (e.g.,
- {\tt source(up\_ from (0,0) to (0,0.75))} ). Element sizes
- can be varied and non-two-terminal elements included (\FR{QTrans})
- as described in later sections.\label{quick}}%
+ nodes can be defined (examples: {\tt Origin:$\;$(0,0)} or {\tt
+ Northwest:$\;$Origin+(0,elen\_)}) and circuit branches drawn between them;
+ or absolute coordinates can be used (e.g., {\tt source(up\_
+ from (0,0) to (0,0.75))} ). Element sizes can be varied and
+ non-two-terminal elements included (\FR{QTrans}) as described in
+ later sections.\label{quick}}%
\end{figure}
\subsubsection{\protect{Using \Mfour}%
@@ -211,7 +212,7 @@ The effect of the second \Mfour command above is shown in \FR{ConfigA}.
{\tt m4 pstricks.m4 quick.m4 > quick.pic}.
\label{ConfigA}}
\end{figure}
-Configuration files {\tt pstricks.m4} or {\tt pgf.m4}
+Configuration files {\tt pstricks.m4} and {\tt pgf.m4}
cause library {\tt libgen.m4}
to be read, thereby defining the macro {\tt cct\_init}.
The diagram source file is then read and
@@ -337,7 +338,7 @@ This method processes the picture source each time \latex is run, so for
large documents containing many diagrams, the \verb|\mtotex|
lines could be commented out after debugging the corresponding graphic.
A derivative of this method that allows the insertion of
-\pic code into a \Tikz picture is described in \SR{Tikzwithpic:}.
+\pic-produced code into a \Tikz picture is described in \SR{Tikzwithpic:}.
\item
It might be convenient for the source of small diagrams to be part
@@ -498,7 +499,7 @@ circular graph nodes, for example. Otherwise
\noindent
truncates the line by {\tt x} at the start and {\tt y} at the end.
-Any of the above means of specifying line (or arrow) direction and length
+Any of the above means of specifying line direction and length
will be called a \linespec.
Lines can be concatenated to create multsegmented objects.
@@ -1740,7 +1741,7 @@ The first argument of both macros establishes the drawing direction.
\begin{figure}[H]
\input JackMan
\vspace{-1ex}
- \caption{The {\tt jack(U|D|L|R|{\sl degrees}, {\sl chars})}
+ \caption{The {\tt jack(U|D|L|R|{\sl degrees}, {\sl chars} [;{\sl keys}])}
and {\tt plug(U|D|L|R|{\sl degrees},[2|3][R])} components
and their defined points.}
\label{Jack}
@@ -3022,65 +3023,62 @@ to equal {\tt ({\sl expression})}; if the substring is not found, {\tt
m4wdth} is given the default value {\tt (dimen\_*2).} The enclosing
parentheses are omitted if the fourth argument of {\tt pushkey\_} is
nonblank as would be required if {\tt m4wdth} were to be non-numeric.
-Argument 1 can contain several such substrings separated by semicolons.
+%Argument 1 can contain several such substrings separated by semicolons.
In addition, the macro
{\tt pushkeys\_({\sl string, keysequence})}
\noindent
-applies {\tt pushkey\_()} multiple times to its {\sl keysequence}
+applies {\tt pushkey\_()} to each of the terms of its {\sl keysequence}
(second) argument.
-Each term of the second argument consists of the rightmost three
-arguments of {\tt pushkey\_} separated by the colons (:) rather than commas.
-
-%For example, suppose that a macro contains the line
-%
-%{\tt pushkeys\_(`\$1', wdth:dimen\_/2; type::N)}
-%
-%\noindent
-%and is invoked as {\tt {\sl macro}(type=Basic;wdth=0.2, $\ldots$)}.
-%The first argument is scanned, resulting in
-%{\tt m4wdth} defined to be
-%{\tt (0.2)} and {\tt m4type} to be {\tt Basic}.
+Each term of the semicolon-separated second argument sequence
+consists of the rightmost three
+arguments of {\tt pushkey\_} separated by colons (:) rather than commas.
+Normal good practice cancels pushed key definitions at macro exit,
+for example,
+{\tt popdef(\LQ{}m4{}{\sl string1}\RQ,\LQ{}m4{}{\sl string2}\RQ, \ldots ).}
The macros {\tt setkey\_()} and {\tt setkeys\_()} are similar to
{\tt pushkey\_()} and {\tt pushkeys\_()} respectively but use the
m4 {\tt define} command rather than {\tt pushdef}.
-For example, the macro
-{\tt sarrow({\sl linespec}, {\sl keys})}
-can generate the custom arrows shown below the three native arrows
-in \FR{arrowex}. The defined keys are
- {\tt type=}; {\tt lgth=}; {\tt wdth=}; {\tt shaft=}; and {\tt head=}.
-Many variations of these arrowheads are possible.
-\begin{figure}[H]
- \input arrowex
- \caption{The three \dpic native arrows and others generated by
- {\tt sarrow({\sl linespec}, {\sl keys})}.}
- \label{arrowex}
- \end{figure}
-
-As another example, consider the elementary example of a custom box macro:
+For example, consider the elementary example of a custom box macro:
\begin{verbatim}
define(`custombox',
-`pushkeys_(`$1',wdth:boxwid:; hgt:boxht:; label::N; text::N)
- ifelse(m4label,,,m4label:) box wid m4wdth ht m4hgt "m4text" ')
+`pushkeys_(`$1',wdth:boxwid:; hgt:boxht:; name::N; text::N)
+ ifelse(m4name,,,m4name:) box wid m4wdth ht m4hgt ifelse(m4text,,,"m4text")
+ popdef(`m4wdth',`m4hgt',`m4name',`m4text')')
\end{verbatim}
-Then {\tt custombox(wdth=2; label=B1; text=Hello)}
-first causes the macros {\tt m4wdth, m4hgt, m4label,} and {\tt m4text}
+Then {\tt custombox(wdth=2; name=B1; text=Hello)}
+first causes the macros {\tt m4wdth, m4hgt, m4name,} 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')}.
+%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')}.
+
+As another example, the macro
+{\tt sarrow({\sl linespec}, {\sl keys})}
+can generate the custom arrows shown below the three native arrows
+in \FR{arrowex}. The defined keys are
+ {\tt type=}; {\tt wdth=}; {\tt lgth=};
+ {\tt shaft=}; {\tt head=}; {\tt hook=}; and {\tt name=}.
+Many variations of these arrowheads could be created by adding keys.
+\begin{figure}[H]
+ \input arrowex
+ \caption{The three \dpic native arrows and others generated by
+ {\tt sarrow({\sl linespec}, {\sl keys})}.}
+ \label{arrowex}
+ \end{figure}
+\enlargethispage{\baselineskip}
\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.
@@ -3331,7 +3329,7 @@ the rotation of text by \PSTricks postprocessing is illustrated by the file
which contains both horizontal text and text rotated $90^\circ$ along the
vertical line.
This rotation of text is also implemented by the macro
-{\tt rs\_boxs([angle={\sl degrees};] {\sl text}[,{\sl expr, expr $\ldots$}])},
+{\tt rs\_box([angle={\sl degrees};] {\sl text}[,{\sl expr, expr $\ldots$}])},
which is similar
to {\tt s\_box} but rotates its argument by~$90^\circ,$ a default angle
that can be changed by preceding invocation with
@@ -3605,6 +3603,8 @@ to modify them.
Maintaining reasonable compatibility with both \gpic\ and \dpic
and, especially, with different postprocessors, has
resulted in some macros becoming more complicated than is preferable.
+Furthermore, some of the newer macros make use of \dpic\ facilities
+not available with \gpic.
Here are some hints, gleaned from experience and from comments I have
received.
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/doc/defines.tex b/Master/texmf-dist/doc/latex/circuit-macros/doc/defines.tex
index 6cb3a997c79..fbb8fb0d672 100644
--- a/Master/texmf-dist/doc/latex/circuit-macros/doc/defines.tex
+++ b/Master/texmf-dist/doc/latex/circuit-macros/doc/defines.tex
@@ -32,6 +32,8 @@
\newcommand{\LR}[1]{\hyperref[#1]{{#1}}\hskip1em}
\newcommand{\fra}[1]{\hbox{\sl frac#1}}%
+\renewcommand{\Re}{\mathop{\rm Re}\nolimits}
+\renewcommand{\Im}{\mathop{\rm Im}\nolimits}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -40,7 +42,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{Y}
+\LR{R} \LR{S} \LR{T} \LR{U} \LR{V} \LR{W} \LR{X} \LR{Y} \LR{Z}
\\
\Letter{A}%
@@ -666,10 +668,11 @@
\macrodef{darrow\_init}{darrow_init}{}%
{darrow}%
{Initialize darrow drawing parameters (reads library file {\tt darrow.m4})}%
-\macrodef{dashline}{dashline}{(\linespec,{\sl thickness}|{\sl color}|<->,
+\macrodef{dashline}{dashline}{(\linespec,{\sl thickness}|{\sl color}|<->|->|<-,
{\sl dash len, gap len},G)}%
{gen}%
- {dashed line with dash at end ({\tt G} ends with gap)}%
+ {Dashed line with dash at end ({\tt G} ends with gap). Dashes are
+ adjusted to fit with given gap length. Dpic only.}%
\macrodef{dbelow}{dbelow}{(at {\sl location})}%
{darrow}%
{below (displaced dlinewid/2)}%
@@ -1410,11 +1413,14 @@ n|e|s|w,{\sl length})}%
\Letter{J}%
-\macrodef{jack}{jack}{(U|D|L|R|{\sl degrees},{\sl chars})}%
+\macrodef{jack}{jack}{(U|D|L|R|{\sl degrees},{\sl chars} [;{\sl keys}])}%
{cct}%
- {arg1: drawing direction; string arg2: {\tt R}: right orientation,
+ {arg1: drawing direction, normally R or L;
+ character sequence arg2: {\tt R}: right orientation,
+ {\tt X} external make or break contact points,
one or more {\tt L[M][B]} for L and auxiliary contacts with make or break
- points; {\tt S[M][B]} for S and auxiliary contacts
+ points; {\tt S[M][B]} for S and auxiliary contacts;
+ {\tt C[M][B]} for a centre contact
\seesect{Composite:}}%
\macrodef{j\_fet}{j_fet}{(\linespec,L|R,P,E)}%
{cct}%
@@ -1511,9 +1517,11 @@ n|e|s|w,{\sl length})}%
\macrodef{lg\_plen}{lg_plen}{}%
{log}%
{logic pin length in in {\tt L\_unit}s}%
-\macrodef{LH\_symbol}{LH_symbol}{([U|D|L|R|{\sl degrees}][I])}%
+\macrodef{LH\_symbol}{LH_symbol}{([U|D|L|R|{\sl degrees}][I],{\sl keys})}%
{log}%
- {logic-gate hysteresis symbol; {\tt I:} inverted}%
+ {logic-gate hysteresis symbol; {\tt I:} inverted. The keys are:
+ {\tt lgth={\sl expr};},
+ {\tt wdth={\sl fraction};} i.e. body width ={\sl fraction $\times$ height}}%
\macrodef{lin\_ang}{lin_ang}{({\sl line-reference}[,d])}%
{gen}%
{the angle of a line or move from {\tt .start} to {\tt .end} of a linear
@@ -1581,9 +1589,10 @@ n|e|s|w,{\sl length})}%
\macrodef{lt\_}{lt_}{}%
{gen}%
{left with respect to current direction}%
-\macrodef{LT\_symbol}{LT_symbol}{(U|D|L|R|{\sl degrees})}%
+\macrodef{LT\_symbol}{LT_symbol}{(U|D|L|R|{\sl degrees},{\sl keys})}%
{log}%
- {logic-gate triangle symbol}%
+ {logic-gate triangle symbol. The keys are:
+ {\tt wdth={\sl expr};}}%
\macrodef{L\_unit}{L_unit}{}%
{log}%
{logic-element grid size}%
@@ -2190,13 +2199,20 @@ degrees, attributes})}%
{gen}%
{Single-segment, single-headed special arrows with {\sl keys}:\\
{\tt type=}{\tt O[pen]} (default)
- | {\tt D[iamond]} | {\tt C[rowfoot]} | {\tt P[lain]}
- | {\tt R[ight]} | {\tt L[eft]} {\tt ;}\\
+ | {\tt D[iamond]}
+ | {\tt C[rowfoot]}
+ | {\tt DI} (disk)
+ | {\tt P[lain]}
+ | {\tt PP[lain]}
+ | {\tt R[ight]}
+ | {\tt L[eft]} {\tt ;}\\
{\tt wdth=}{\sl expression}{\tt ;} (default {\tt arrowwid})\\
{\tt lgth=}{\sl expression}{\tt ;} (default {\tt arrowht})\\
- {\tt shaft=}{\sl shaft attributes} (e.g., {\tt dashed}){\tt ;}\\
- {\tt head=}{\sl head attributes} (e.g., {\tt shaded}){\tt ;}\\
+ {\tt head=}{\sl head attributes}{\tt ;} (e.g., {\tt shaded})\\
+ {\tt shaft=}{\sl shaft attributes}{\tt ;} (default: head attributes)\\
+ {\tt hook=[L|R|LR]} (left, right, or double hook, default none)\\
{\tt name=}{\sl Name}{\tt ;} (default {\sl Sarrow\_})
+ The {\tt PP} key creates a doubled plain arrowhead
\seesect{Macroarguments:}}%
\macrodef{savem4dir}{savem4dir}{([`{\sl stack name}'])}%
{gen}%
@@ -3177,4 +3193,38 @@ brushht})}%
{cct}%
{Y symbol for power-system diagrams
{\sl keys:} {\tt size={\sl expression}; type=G}}%
+
+\Letter{Z}%
+
+\macrodef{zabs}{zabs}{({\sl complex value})}%
+ {dpictools}%
+ {$\;\;$ Absolute value of complex value $\sqrt{(val.x^2+val.y^2}$}%
+\macrodef{zarg}{zarg}{({\sl complex value})}%
+ {dpictools}%
+ {$\;\;$ Angle of complex value $\hbox{atan2}(val.y, val.x)$}%
+\macrodef{Zcos}{Zcos}{({\sl complex value})}%
+ {dpictools}%
+ {$\;\;$ Complex cosine
+ $(\cos(val.x)*\cosh(val.y), -\sin(val.x)*\sinh(val.y))$}%
+\macrodef{Zdiff}{Zdiff}{({\sl complex value, complex value})}%
+ {dpictools}%
+ {$\;\;$ Complex subtraction $(val1.x-val2.x, val1.y-val2.y)$}%
+\macrodef{Zexp}{Zexp}{({\sl complex value})}%
+ {dpictools}%
+ {$\;\;$ Complex exponential $((\cos(val.y), \sin(val.y))*e^{val.x})$}%
+\macrodef{Zinv}{Zinv}{({\sl complex value})}%
+ {dpictools}%
+ {$\;\;$ Complex inverse $((val.x, -val.y)/\hbox{zabs}(val))$}%
+\macrodef{Zprod}{Zprod}{({\sl complex value, complex value})}%
+ {dpictools}%
+ {$\;\;$ Complex multiplication
+ $(val1.x*val2.x-val1.y*val2.y, val1.y*val2.x+val1.x*val2.y)$}%
+\macrodef{Zsin}{Zsin}{({\sl complex value})}%
+ {dpictools}%
+ {$\;\;$ Complex sine
+ $(\sin(val.x)*\cosh(val.y), \cos(val.x)*\sinh(val.y))$}%
+\macrodef{Zsum}{Zsum}{({\sl complex value, complex value})}%
+ {dpictools}%
+ {$\;\;$ Complex addition $(val1.x+val2.x, val1.y+val2.y)$}%
+
% \end{tabbing}%
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/dpictools.pic b/Master/texmf-dist/doc/latex/circuit-macros/dpictools.pic
index 415cd0329ab..77573bb6675 100644
--- a/Master/texmf-dist/doc/latex/circuit-macros/dpictools.pic
+++ b/Master/texmf-dist/doc/latex/circuit-macros/dpictools.pic
@@ -3,7 +3,7 @@
# m4 macro NeedDpicTools or the pic statement copy "HOMELIB_/dpictools.pic"
# when HOMELIB_ is defined or, generically, copy "<path>dpictools.pic"
-# Circuit_macros Version 10.6, copyright (c) 2024 J. D. Aplevich under #
+# Circuit_macros Version 10.7, copyright (c) 2024 J. D. Aplevich under #
# the LaTeX Project Public Licence in file Licence.txt. The files of #
# this distribution may be redistributed or modified provided that this #
# copyright notice is included and provided that modifications are clearly #
@@ -457,13 +457,13 @@ define rnd {int($1+sign($1)/2)} # round function
# Operations on complex numbers (x,y)
define Zsum {($1+($2))}
define Zdiff{($1-($2))}
-define Zprod{($1.x*$2.x-$1.y*$2.y,$1.y*$2.x+$1.x*$2.y)}
-define Zinv {($1.x/($1.x^2+$1.y^2),-$1.y/($1.x^2+$1.y^2))}
-define Zexp {((cos($1.y),sin($1.y))*expe($1.x))}
-define Zcos {(cos($1.x)*cosh($1.y),-sin($1.x)*sinh($1.y))}
-define Zsin {(sin($1.x)*cosh($1.y), cos(%1.x)*sinh($1.y))}
-define zabs {sqrt($1.x^2+$1.y^2)}
-define zarg {atan2($1.y,$1.x)}
+define Zprod{(($1).x*($2).x-($1).y*($2).y,($1).y*($2).x+($1).x*($2).y)}
+define Zinv {(($1).x/(($1).x^2+($1).y^2),-($1).y/(($1).x^2+($1).y^2))}
+define Zexp {((cos(($1).y),sin(($1).y))*expe(($1).x))}
+define Zcos {(cos(($1).x)*cosh(($1).y),-sin(($1).x)*sinh(($1).y))}
+define Zsin {(sin(($1).x)*cosh(($1).y), cos(($1).x)*sinh(($1).y))}
+define zabs {sqrt(($1).x^2+($1).y^2)}
+define zarg {atan2(($1).y,($1).x)}
# Trig functions if undefined
if "cosh"=="co"+"sh" then {
define cosh {((expe($1) + expe(-($1)))/2)}
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/Capacitors.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/Capacitors.m4
index d96a6f88275..24ffc1493e7 100644
--- a/Master/texmf-dist/doc/latex/circuit-macros/examples/Capacitors.m4
+++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/Capacitors.m4
@@ -33,7 +33,7 @@ vm = 0.28
{variable(`capacitor',NN,-30,dimen_/3); move
# Stacking the strings normally does not work because the .pdf uses the
# length of the last line.
- "`{\tt variable(}{\rm}{\tt capacitor}{\rm}{\tt,}'" ljust
+ "`{\tt variable({\sf\char96}capacitor{\sf\char39},}'" ljust
"`{\enskip\tt NN,-30,dimen\_/3)}'" ljust at last ""+(0,-12pt__)
}
}
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/Fuses.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/Fuses.m4
index dcffba66cb6..adea1e0582f 100644
--- a/Master/texmf-dist/doc/latex/circuit-macros/examples/Fuses.m4
+++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/Fuses.m4
@@ -41,10 +41,13 @@ movewid = 0.25
move
jumper(,CJBED) ; {"`\tt $\ldots$(,CJBED)'" at last line.c+(0,-0.2) }
move
- jumper(,body=outlined "gray" shaded "gray";)
+ jumper(,body=outlined "gray" shaded "gray";);
+# "`\tt $\ldots$(,body=outlined \"gray\" \textbackslash'" wid 168bp__ \
+# at last line.start+(0,-20bp__) ljust \
+# "`\tt \hphantom{body=}shaded \"gray\";)'" ljust # svg kludge:
"`\tt $\ldots$(,body=outlined \"gray\" \textbackslash'" wid 168bp__ \
- at last line.start+(0,-20bp__) ljust \
- "`\tt \hphantom{body=}shaded \"gray\";)'" ljust
+ at (last line.start,last "") ljust
+ "`\tt \hphantom{body=}shaded \"gray\";)'" at last "".sw+(0,-5bp__) below ljust
}
.PE
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/Jack.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/Jack.m4
index b9a005d2794..2569c252671 100644
--- a/Master/texmf-dist/doc/latex/circuit-macros/examples/Jack.m4
+++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/Jack.m4
@@ -1,30 +1,24 @@
.PS
# `Jack.m4'
cct_init
+# https://tex.stackexchange.com/questions/720858/is-there-a-tikz-or-circuitikz-headphone-jack-connector-diagram
P: [
P1: plug
- "\sl A" wid 0.1 at P1.A rjust
- "\sl B" at P1.B rjust
+ foreach_(`Y',`"\sl Y" wid 0.1 at P1.Y rjust',A,B)
"\sl TB" at P1.TB ljust above
"\sl TA" at P1.TA ljust below
+
P2: plug(,R) with .B at P1.A+(0.85,0)
- "\sl A" wid 0.1 at P2.A rjust
- "\sl B" at P2.B rjust
-# P3: plug(L) with .A at P2.A+(1,0)
-# "\sl A" wid 0.1 at P3.A ljust
-# "\sl B" at P3.B ljust
+ foreach_(`Y',`"\sl Y" wid 0.1 at P2.Y rjust',A,B)
+
P4: plug(,3) with .A at P2.B+(0.85,0)
- "\sl A" at P4.A rjust
- "\sl B" at P4.B rjust
- "\sl C" at P4.C rjust
+ foreach_(`Y',`"\sl Y" at P4.Y rjust',A,B,C)
+
P5: plug(L,3R) with .A at P4.A+(1,0)
- "\sl A" wid 0.1 at P5.A ljust
- "\sl B" at P5.B ljust
- "\sl C" at P5.C ljust
+ foreach_(`Y',`"\sl Y" wid 0.1 at P5.Y ljust',A,B,C)
`"\tt plug"' below at P1.s+(0,-0.1)
`"\tt plug(,R)"' below at P2.s+(0,-0.1)
-# `"\tt plug(L)"' below at P3.s+(0,-0.1)
`"\tt plug(,3)"' below at P4.s+(-0.1,-0.1)
`"\tt plug(L,3R)"' below at P5.s+(0.1,-0.1)
]
@@ -34,45 +28,33 @@ L: [ right_
thinlines_
"\sl L" wid 0.1 rjust at J1.L
arrow <- right 0.1 from J1.F; "\sl F" ljust
- arrow <- down 0.1 from J1.G then left 0.1 ; "\sl G" rjust
+ arrow <- down 0.1 left 0.1 from J1.G ; "\sl G" rjust
+ arrow <- up 0.1 left 0.1 from J1.H ; "\sl H" rjust
thicklines_
- J2:[K2: jack(,LMBS) #with .F at J1.F+(1.2,0)
- thinlines_
- "\sl L" rjust at K2.L
- arrow <- from K2.LM left 0.25; "\sl LM" wid 0.18 rjust
- arrow <- from K2.LB left 0.25; "\sl LB" rjust
- "\sl S" rjust at K2.S
- thicklines_ ] with .K2.F at J1.F+(1.2,0)
- J3: jack(L,RLS) with .F at J2.K2.F+(0.4,0)
- thinlines_
+
+ J3: jack(L,RLS) with .F at J1.F+(0.4,0)
"\sl L" ljust at J3.L
"\sl S" ljust at J3.S
- thicklines_
- J4: jack(L,RLBLMLMS) with .F at J3.F+(1.1,0)
- thinlines_
- "\sl L1" ljust at J4.L1
- arrow <- right 0.3 from J4.LM1; "\sl LM1" ljust
- "\sl L2" ljust at J4.L2
- arrow <- right 0.3 from J4.LM2; "\sl LM2" wid 0.2 ht 11pt__ ljust
- "\sl S" ljust at J4.S
- "\sl L" ljust at J4.L
- arrow <- right 0.2 from J4.LB ; "\sl LB" ljust
- right_
- J5: jack(,RSBSMLB) with .F at J4.F+(1.95,0)
+
+ J2: jack(,LMBS) with .F at J3.F+(1.5,0)
thinlines_
- "\sl L" rjust at J5.L
- "\sl S" rjust at J5.S
- "\sl S1" rjust at J5.S1
- arrow <- left 0.3 from J5.SM1; "\sl SM1" rjust
- spline 0.5 <- left 0.25 then left 0.1 down 0.05 from J5.LB; "\sl LB" rjust
- spline 0.5 <- left 0.25 then left 0.1 up 0.05 from J5.SB; "\sl SB" rjust
+ "\sl L" rjust at J2.L
+ arrow <- from J2.LM left 0.25; "\sl LM" wid 0.18 rjust
+ arrow <- from J2.LB left 0.25; "\sl LB" rjust
+ "\sl S" rjust at J2.S
thicklines_
+ J11: jack(,LMBSX) with .w at last [].e+(0.5,0)
+ foreach_(`Y',`"\small\sl Y" rjust at J11.Y.w', L,LM,LB,S,G)
+
+ J8: jack(,XLLBSSBC) with .sw at last [].se+(0.75,0)
+ foreach_(`Y',`"\small\sl Y" rjust at J8.Y.w', L,L1,LB1,S,S1,SB1,G,C)
+
`"\tt jack"' ht 0.15 below at J1.s+(0,-0.15)
- `"\tt jack(,LMBS)"' below at (J2,last "")
+ `"\tt ..(,LMBS)"' below at (J2,last "")
`"\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)
+ `"\tt ..(,LMBSX)"' below at (J11,last "")
+ `"\tt ..(,XLLBSSBC)"' below at (J8, last "")
+] with .nw at last [].sw + (0,0.1)
.PE
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/LT3724.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/LT3724.m4
new file mode 100644
index 00000000000..19a3a5486e7
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/LT3724.m4
@@ -0,0 +1,89 @@
+.PS
+# LT3724.m4
+# https://pdf1.alldatasheet.com/datasheet-pdf/view/547351/LINER/LT3724.html
+
+log_init
+include(ics.m4)
+iflatex{command "{\scriptsize\sf"}
+
+# This draws the symbolic chip with external circuitry
+
+pinsep=0.25
+hght= 9*pinsep
+wdth=0.6*hght
+blskip = 0.1
+
+[ QR: LT3724
+ line left_ dimen_/2 from QR.SYNC; ground
+ line left_ dimen_/2 from QR.FSET
+ R7: resistor(down_ dimen_); rlabel(,"\SI{49.9}{\kilo\ohm}"); ground(,T)
+ line left_ dimen_ from QR.VC
+ {dot; capacitor(down_ pinsep); llabel(,"\SI{120}{\pico\farad}"); ground(,T)}
+ resistor(left_ dimen_*5/4); rlabel(,\SI{10}{\kilo\ohm})
+ capacitor(down_ pinsep); llabel(,\SI{680}{\pico\farad}); ground(,T)
+ line left_ dimen_/2 from QR.BURST_EN then down_ QR.BURST_EN.y-QR.VFB.y; dot
+
+ DL: dot(at QR.VFB-(dimen_*13/4,0))
+ resistor(down_ pinsep*2); llabel(,"\SI{14.7}{\kilo\ohm}"); ground(,T)
+
+ line left_ dimen_/2 from QR.VIN then up_ QR.n.y-QR.VIN.y+dimen_/3; VINL: dot
+ line left_ dimen_*3/2 from QR.SHDN; dot
+ {resistor(down_ dimen_); rlabel(,"\SI{82.5}{\kilo\ohm}"); H: ground(,T)
+ capacitor(left_ dimen_ from QR.CSS); rlabel(,\SI{1000}{\pico\farad})
+ line to (Here,H); ground(,T)}
+ resistor(up_ to (Here,VINL)); rlabel(,"\SI{1}{\mega\ohm}"); dot
+ dot(at (Here.x-dimen_,Here.y))
+ {capacitor(down_ pinsep); {"\SI{22}{\micro\farad}" at last [].e ljust}
+ line left_ dimen_}
+ dot(at (Here.x-dimen_,Here.y))
+ {capacitor(down_ pinsep); {"\SI{68}{\micro\farad}" at last [].e ljust}
+ dot; ground}
+ VIN: (Here.x-dimen_/2,Here.y); {line invis left_ 25bp__ from VIN}
+ "V$_{\hbox{\tiny IN}}$" at VIN rjust
+ "\SI{36}{\volt}" rjust at VIN-(0,blskip*2.5) \
+ "TO" rjust "\SI{60}{\volt}" rjust
+
+ line right_ dimen_/2 from QR.SGND; dot; ground(at (Here,R7.end),T)
+ line to (Here,QR.PGND) then to QR.PGND
+ dot(at QR.VCC+(dimen_/2,0))
+ { capacitor(down_ pinsep); llabel(,\SI{1}{\micro\farad}); dot }
+ dot(at Here+(dimen_*3/4,0))
+ { reversed(`diode',to (Here,QR.SENSEM)); DV: dot}
+ { line to QR.VCC }
+ diode(right_ dimen_*2/3); DP: dot
+ { line to (Here,QR.BOOST) then to QR.BOOST }
+ capacitor(right_ dimen_); {"\SI{22}{\micro\farad}" at last [].n above}
+ DZ: dot; reversed(`diode',down_ pinsep,Z); ground(,T)
+ "PDS5100H" at last [].w rjust below
+ resistor(right_ from QR.SW to (DP,QR.SW)); llabel(,\SI{10}{\ohm})
+ line to (DZ,Here); dot
+ {up_; M1: mosfet(,,TEDSQuB) with .e at (DZ,QR.TG); "Si850DP" at M1.e ljust
+ line from M1.G to QR.TG}
+ line from DZ to M1.S
+ line from M1.D up_ VIN.y-M1.D.y then to VIN
+ inductor(right_ dimen_ from DZ); llabel(,\SI{10}{\micro\henry}); dot
+ {line to (Here,QR.SENSEP) then to QR.SENSEP}
+ resistor(right_ dimen_); llabel(,\SI{0.015}{\ohm}); DQ: dot
+ line from QR.VFB to DL-(dimen_/2,0)
+ resistor(down_ Here.y-R7.end.y+dimen_/2); llabel(,\SI{130}{\kilo\ohm})
+ line to (DV,Here) then to DV
+ line from QR.SENSEM to (DQ,QR.SENSEM) then to DQ
+ { dot(at DQ+(dimen_/2,0))
+ capacitor(down_ pinsep); llabel(,\SI{68}{\micro\farad}); ground(,T) }
+ { dot(at DQ+(dimen_*3/2,0))
+ capacitor(down_ pinsep); llabel(,\SI{33}{\micro\farad}); ground(,T) }
+ line from DQ right_ dimen_*2.25; {line invis right_ 24bp__}
+ VOUT: Here
+ "V$_{\hbox{\tiny OUT}}$" at VOUT ljust
+ "\SI{12}{\volt}" at VOUT+(0,-blskip*1.2) ljust
+ "\SI{50}{\watt}" at VOUT+(0,-blskip*1.2*2) ljust
+
+ "High voltage step-down regulator" ljust at (M1.e.x+10bp__,QR.n.y) \
+ "\SI{48}{\volt} TO \SI{12}{\volt}, \SI{50}{\watt}" ljust
+ ]
+#showbox_
+#print last [].wid,last [].ht
+
+iflatex(command "}%")
+
+.PE
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/Loglog.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/Loglog.m4
index 2985338b3dc..dfd8960cf1b 100644
--- a/Master/texmf-dist/doc/latex/circuit-macros/examples/Loglog.m4
+++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/Loglog.m4
@@ -3,6 +3,7 @@
gen_init
s_init(Loglog)
sinclude(tst.dim)
+scale = 1/0.8
define(`rint',`sign(`$1')*int(abs(`$1')+.5)')
S:[
@@ -79,7 +80,61 @@ thicklines_
]
-# box wid S.wid ht S.ht at S
-# print (S.wid,S.ht)/(1 pc__)
+#.PE
+#.PS
+# ex06.m4
+#gen_init
+[
+F: box invis wid 1.6i ht 1.8i
+E: box invis wid F.wid ht F.ht
+G: box invis wid 1i ht F.ht
+
+ ell = F.ht-0.6i
+ r = 0.3i
+ offset = 8bp__
+ hatch = 0.1i
+ dhs = hatch * sqrt(2)
+ qmell = F.ht - ell
+ kwid = F.wid-qmell-r
+
+ hatchbox(wid G.e.x-F.w.x ht F.ht,hatch) with .sw at F.sw
+ box invis fill_(1) ht ell wid E.e.x-F.w.x with .nw at F.nw
+
+ box wid G.e.x-F.w.x ht F.ht with .sw at F.sw thick linethick*3/2
+ foreach_(`B',
+ `B`'T: B.se + (-qmell,qmell)
+ line invis fill_(1) from B.se to (B.se,B`'T) then to B`'T then to B.se
+ line from (B.w,B`'T) to B`'T chop 0 chop -offset
+ line from B`'T up ell chop -offset chop 0
+ line from B`'T + (-r,0) up ell
+ line dashed from B`'T to B.se
+ "\large $0$" at B`'T + (-r/2,ell/2)
+ "\large $0$" at B`'T + (qmell/2,ell/2)
+ "$t$" at (B`'T,B.n) + (-offset/2,offset)
+ sprintf("$\overbrace{\phantom{\hbox to %gin{}}}^{\hbox{$k$}}$",kwid/scale) \
+ at B.nw + (kwid/2,0) above
+ hatchbox(wid kwid ht ell,hatch,,90) with .nw at B.nw
+ line from B.ne to B.se thick linethick*3/2
+ ',F,E)
+
+ line from (G.w,ET) right G.wid
+ line from ET + (0,r) left ET.x-E.w.x
+ hatchbox(wid r ht r,hatch,,0) with .se at ET
+
+ "$q$" at F.sw + (-offset,offset/3)
+ "$\ell$" at (F.w,FT) + (-offset,offset/3)
+
+ "$n{+}p{+}m$" at G.ne + (0,offset)
+
+ foreach_(`B',`"\Large $B$" ht 0.2 with .n at B.s + (0,-offset/2)',F,E,G)
+
+ # extra left brace to avoid a psfrag problem (bug?)
+ sprintf(\
+ "$\vphantom{\{}\left.\vrule height %gin depth0pt width0pt\right\}r$",\
+ r/2*0.9) at ET + (offset,r/2)
+
+# Adjust the bounding box without using s_box:
+# move from F.nw+(-12bp__,21bp__) to G.se+(20bp__,-15bp__)
+ ] with .sw at last [].se+(0.15,0)
.PE
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/Makefile b/Master/texmf-dist/doc/latex/circuit-macros/examples/Makefile
index f2f54e02d05..30b761b5f1e 100644
--- a/Master/texmf-dist/doc/latex/circuit-macros/examples/Makefile
+++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/Makefile
@@ -70,15 +70,15 @@ TEXPICS = \
cbresistor.tex csc.tex Csource.tex Decoder.tex \
Demultiplexer.tex diamond.tex Dini.tex Diodes.tex Drive.tex \
EEP.tex Emarrows.tex Escher.tex EVplugs.tex \
- ex01.tex ex02.tex ex03.tex ex04.tex ex05.tex ex06.tex ex08.tex \
+ ex01.tex ex03.tex ex04.tex ex05.tex ex08.tex \
ex09.tex ex10.tex ex11.tex ex12.tex ex15.tex ex16.tex ex18.tex \
ex21.tex exp.tex fet.tex Flow.tex Fuses.tex \
Geometry.tex GrayCode.tex graysurf.tex Grounds.tex \
Headers.tex Heathkit.tex \
I2L.tex Incleps.tex Inductors.tex Jack.tex \
- lcct.tex Logic.tex Loglog.tex MC.tex Mixer.tex MoreTable.tex \
- MotorControl.tex Multiplexer.tex \
- NLG.tex NPDT.tex Nport.tex Opamp.tex Optoiso.tex \
+ lcct.tex Logic.tex Loglog.tex LT3724.tex \
+ MC.tex Mixer.tex MoreTable.tex MotorControl.tex Multiplexer.tex \
+ NLG.tex NPDT.tex Nport.tex OneLine.tex Opamp.tex Optoiso.tex \
Pconn.tex Plate.tex PushPull.tex pwrsupply.tex \
Quantum.tex quick.tex \
random.tex Rectifiers.tex recycle.tex relaycoil.tex Relay.tex \
@@ -133,9 +133,9 @@ LTXFILE=printf "|documentclass[11pt]{article}\n\
$(M4) $(CONF) $(DIMFILE) F_$*.dim $*.m4 > $*.pic
.m4.tex:
@touch $(DIMFILE) F_$*.dim
- $(M4) $(CONF) $(DIMFILE) F_$*.dim $*.m4 | $(PIC) $(MODE) > $*.tex
-# $(M4) $(CONF) $(DIMFILE) F_$*.dim $*.m4 > $*.pic
-# $(PIC) $(MODE) $*.pic > $*.tex
+# $(M4) $(CONF) $(DIMFILE) F_$*.dim $*.m4 | $(PIC) $(MODE) > $*.tex
+ $(M4) $(CONF) $(DIMFILE) F_$*.dim $*.m4 > $*.pic
+ $(PIC) $(MODE) $*.pic > $*.tex
.m4.dvi:
@touch $(DIMFILE) F_$*.dim
$(M4) pstricks.m4 $(DIMFILE) F_$*.dim $*.m4 | $(PIC) -p > $*.tex
@@ -201,7 +201,7 @@ LTXFILE=printf "|documentclass[11pt]{article}\n\
pdf2svg $*.pdf $*.svg
chmod 644 $*.svg
# rm $*.pdf
-
+ rm -f F_*
#########################################################################
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/extras/OneLine.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/OneLine.m4
index 7b451b366aa..7b451b366aa 100644
--- a/Master/texmf-dist/doc/latex/circuit-macros/examples/extras/OneLine.m4
+++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/OneLine.m4
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/Shapedefs.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/Shapedefs.m4
new file mode 100644
index 00000000000..72a15118bd2
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/Shapedefs.m4
@@ -0,0 +1,226 @@
+ifdef(`View3d',,`threeD_init')
+divert(-1)
+# Shapedefs.m4
+# 3D structures with complex surfaces and hidden lines are the domain of more
+# sophisticated software packages, but basic shapes can be drawn with pic.
+
+#####################################################
+
+ `cylinder3D(xdispl,ydispl,zdispl,diameter,
+ [colored "color"])'
+define(`cylinder3D',`[ Start: (0,0)
+ xdispl = `$1'; ydispl = `$2'; zdispl = `$3'
+ define(`M4CL',`xdispl,ydispl,zdispl')dnl
+ lenc = length3D(M4CL)
+ diamc = ifelse(`$4',,(lenc/2),`$4') ; radc = diamc/2
+ cs = dot3D(View3D,M4CL)/lenc
+ End: Project(M4CL)
+ az = atan2(ydispl,xdispl)
+ ae = atan2(zdispl,sqrt(xdispl^2+ydispl^2))
+ CL: line invis from Start to End; C: CL.c
+ nls = int(twopi_*radc/lthick)
+ define(`M4PP',`rot3Dz(az,rot3Dy(-ae,rot3Dx(-i/nls*twopi_,0,0,radc)))')dnl
+ for i=0 to nls-1 do { if dot3D(View3D,M4PP) > 0 then {
+ P: Project(M4PP)
+ ql = sqrta(dot3D(Light3D,M4PP)/radc)
+ line from P to End+P outlined rgbstring(ql,ql,ql) `$5' } }
+ Perp: (vperp(CL,radc))
+ if cs > 0 then { T: End; B: Start } else { T: Start; B: End }
+ rpoint_(from Start to Perp)
+ css = sqrta(cs)
+ Top: rotellipse(diamc,diamc*cs,
+ thick linethick/3 shaded rgbstring(css,css,css)) with .c at T
+ W: line thick linethick/3 from T+Perp to B+Perp
+ Bot: ellipsearc(diamc,diamc*cs,pi_,twopi_,rp_ang,cw,
+ thick linethick/3) with .C at B
+ E: line thick linethick/3 from B-Perp to T-Perp
+ rpoint_(from Start to End)
+`$6']')
+
+ `cone3D(xdispl,ydispl,zdispl,diameter,
+ [colored "color"])'
+ `internal positions:
+ Start (centre of base),
+ End (point),
+ C (axis centre)'
+define(`cone3D',`[ Start: (0,0)
+ xdispl = `$1'; ydispl = `$2'; zdispl = `$3'
+ define(`M4CL',`xdispl,ydispl,zdispl')dnl
+ lenc = length3D(M4CL)
+ diamc = ifelse(`$4',,(lenc/2),`$4') ; radc = diamc/2
+ End: Project(M4CL)
+ cs = dot3D(View3D,M4CL)/lenc
+ az = atan2(ydispl,xdispl)
+ ae = atan2(zdispl,sqrt(xdispl^2+ydispl^2))
+ CL: line invis from Start to End; C: CL.c
+ nls = int(twopi_*radc/lthick)
+ lt = sqrt(radc^2+lenc^2)
+ b = 0
+ for i=0 to nls-1 do { if dot3D(View3D,
+ rot3Dz(az,rot3Dy(-ae,rot3Dx(-i/nls*twopi_,radc,0,lenc)))) > 0 then {
+ ql = sqrta(dot3D(Light3D,
+ rot3Dz(az,rot3Dy(-ae,rot3Dx(-i/nls*twopi_,radc,0,lenc))))/lt)
+ P: Project(rot3Dz(az,rot3Dy(-ae,rot3Dx(-i/nls*twopi_,0,0,radc))))
+ line from P to End outlined rgbstring(ql,ql,ql) `$5'
+ if !b then { WB: P; b = 1 }
+ } else { if b then { BW: P; b = 0 } } }
+ if vlength(CL.x,CL.y) != 0 then { Perp: (vperp(CL,radc,R)) } \
+ else { Perp: (radc,0) }
+ if cs >= 0 then { T: End; B: Start } else {T: Start; B: End }
+ rpoint_(from Start to Perp)
+ pout = (vlength(End.x,End.y) > abs(radc*cs))
+ if cs < 0 then { css = sqrta(cs)
+ if pout then { line thick linethick/3 from BW to End then to WB }
+ Bot: rotellipse(diamc,diamc*cs,thick linethick/3 \
+ ifelse(`$5',,`shaded rgbstring(css,css,css)',`$5')) with .c at T } \
+ else { if pout then {
+ line thick linethick/3 from BW to End then to WB
+ a = acos((WB.x*Perp.x+WB.y*Perp.y)/radc^2)
+ Bot: ellipsearc(diamc,diamc*cs,a,pi_-a,rp_ang,cw, thick linethick/3) \
+ with .C at B } \
+ else {
+ Bot: rotellipse(diamc,diamc*cs,thick linethick/3) with .c at B } }
+ rpoint_(from Start to End)
+`$6']')
+ `Arrow3D(xdispl,ydispl,zdispl,
+ diam,arrowwid,arrowht)'
+define(`Arrow3D',`[ diam_Ar = ifelse(`$4',,linewid/10,`$4')
+ wid_Ar = ifelse(`$5',,diam_Ar*2,`$5')
+ ht_Ar = ifelse(`$6',,wid_Ar*2,`$6')
+ x_Ar = ifelse(`$1',,1,`$1')
+ y_Ar = ifelse(`$2',,1,`$2')
+ z_Ar = ifelse(`$3',,1,`$3')
+ define(`M4Arrow3D',`x_Ar,y_Ar,z_Ar')dnl
+ len_Ar = length3D(M4Arrow3D)
+ len_Shaft = len_Ar - ht_Ar
+ cs_Ar = dot3D(View3D,M4Arrow3D)
+ if cs_Ar >= 0 then {
+ Shaft: cylinder3D(sprod3D(len_Shaft/len_Ar,M4Arrow3D),diam_Ar)
+ Head: cone3D(sprod3D(ht_Ar/len_Ar,M4Arrow3D),wid_Ar) \
+ with .Start at Shaft.End } \
+ else {
+ Head: cone3D(sprod3D(ht_Ar/len_Ar,M4Arrow3D),wid_Ar)
+ Shaft: cylinder3D(sprod3D(len_Shaft/len_Ar,M4Arrow3D),diam_Ar) \
+ with .End at Head.Start }
+ Start: Shaft.Start; End: Head.End
+ `$7']')
+
+define(`f2xyz3D',``$1'x = `$2'
+ `$1'y = `$3'
+ `$1'z = `$4' ')
+
+ `prism3D(xdispl,ydispl,zdispl,endwid,endht,
+ (rad)rotation)
+ args1-3 are the 3D coords of .End wrt .Start
+ arg6 is rotation about x axis
+ Defined points .Start, .End, .C'
+define(`prism3D',`[ Start: (0,0)
+ xdispl = ifelse(`$1',,linewid,`$1')
+ ydispl = ifelse(`$2',,linewid,`$2')
+ zdispl = ifelse(`$3',,linewid,`$3')
+ widp = ifelse(`$4',,(linewid/5),`$4')
+ htp = ifelse(`$5',,(linewid/10),`$5')
+ rotp = ifelse(`$6',,0,`$6')
+ End: Project(xdispl,ydispl,zdispl); C: 0.5 between Start and End
+ lenp = length3D(xdispl,ydispl,zdispl)
+ az = atan2(ydispl,xdispl); ae = atan2(zdispl,sqrt(xdispl^2+ydispl^2))
+ wp2 = widp/2; hp2 = htp/2
+# 3D coords of corners (B=back, F=front)
+ f2xyz3D(nwB,rot3Dz(az,rot3Dy(-ae,rot3Dx(rotp, 0,-wp2, hp2))))
+ f2xyz3D(swB,rot3Dz(az,rot3Dy(-ae,rot3Dx(rotp, 0,-wp2,-hp2))))
+ f2xyz3D(seB,rot3Dz(az,rot3Dy(-ae,rot3Dx(rotp, 0, wp2,-hp2))))
+ f2xyz3D(neB,rot3Dz(az,rot3Dy(-ae,rot3Dx(rotp, 0, wp2, hp2))))
+ f2xyz3D(nwF,rot3Dz(az,rot3Dy(-ae,rot3Dx(rotp,lenp,-wp2, hp2))))
+ f2xyz3D(swF,rot3Dz(az,rot3Dy(-ae,rot3Dx(rotp,lenp,-wp2,-hp2))))
+ f2xyz3D(seF,rot3Dz(az,rot3Dy(-ae,rot3Dx(rotp,lenp, wp2,-hp2))))
+ f2xyz3D(neF,rot3Dz(az,rot3Dy(-ae,rot3Dx(rotp,lenp, wp2, hp2))))
+# facets
+ M4Facet3D(neF,nwF,swF,seF)
+ M4Facet3D(neB,seB,swB,nwB)
+ M4Facet3D(neF,seF,seB,neB)
+ M4Facet3D(neF,neB,nwB,nwF)
+ M4Facet3D(seF,swF,swB,seB)
+ M4Facet3D(nwF,nwB,swB,swF)
+`$7']')
+
+ `M4Facet3D( a,b,c,d )'
+define(`M4Facet3D',`
+define(`PFacet',`cross3D(diff3D(`$2'x,`$2'y,`$2'z,`$1'x,`$1'y,`$1'z),
+ diff3D(`$3'x,`$3'y,`$3'z,`$2'x,`$2'y,`$2'z))')
+ if dot3D(View3D,PFacet) > 0 then {
+ fFacet = sqrta(dot3D(Light3D,PFacet)/length3D(PFacet))
+ P1: Project(`$1'x,`$1'y,`$1'z)
+ P2: Project(`$2'x,`$2'y,`$2'z)
+ P3: Project(`$3'x,`$3'y,`$3'z)
+ P4: Project(`$4'x,`$4'y,`$4'z)
+ line fill_(fFacet) invis from P1 to P2 then to P3 then to P4 then to P1
+ line from P1 to P2; round
+ line to P3; round
+ line to P4; round
+ line to P1; round } ')
+
+ `M4Pgram3D( c,dne,dnw )'
+define(`M4Pgram3D',`
+ f2xyz3D(ne,sum3D(`$1'x,`$1'y,`$1'z,`$3'x,`$3'y,`$3'z))
+ f2xyz3D(nw,sum3D(`$1'x,`$1'y,`$1'z,`$2'x,`$2'y,`$2'z))
+ f2xyz3D(sw,diff3D(`$1'x,`$1'y,`$1'z,`$2'x,`$2'y,`$2'z))
+ f2xyz3D(se,diff3D(`$1'x,`$1'y,`$1'z,`$3'x,`$3'y,`$3'z))
+ define(`PPgrapm',`cross3D(
+ diff3D(nwx,nwy,nwz,nex,ney,nez),
+ diff3D(swx,swy,swz,nwx,nwy,nwz))')
+ if dot3D(View3D,PPgram) > 0 then {
+ fPgram = sqrta(dot3D(Light3D,PPgram)/length3D(PPgram))
+ P1: Project(`$1'x,`$1'y,`$1'z)
+ P2: Project(`$2'x,`$2'y,`$2'z)
+ P3: Project(`$3'x,`$3'y,`$3'z)
+ P4: Project(`$4'x,`$4'y,`$4'z)
+ line fill_(fPgram) invis from P1 to P2 then to P3 then to P4 then to P1
+ line from P1 to P2; round
+ line to P3; round
+ line to P4; round
+ line to P1; round } ')
+ `prism3D(
+ xdispl,ydispl,zdispl,endwid,endht,(rad)rotation,
+ index,dataname,r,g,b)
+ Defined points .Start, .End, .C
+ args1-3 are the input 3D coords of .End wrt .Start
+ args4-5 define the end dimensions
+ arg6 is rotation about x axis
+ arg7 is the current depth of the data vector
+ arg8 is the name (e.g. X) of the vector of
+ stored face distance, color, and projected coords:
+ eg X0[n]=[d,r]; X1[n]=[g,b]
+ X2[n]=proj(C); X3[n]=proj(NE); X4[n]=proj(NW)'
+define(`prism3D',`[ Start: (0,0)
+ xdispl = ifelse(`$1',,linewid,`$1')
+ ydispl = ifelse(`$2',,linewid,`$2')
+ zdispl = ifelse(`$3',,linewid,`$3')
+ widp = ifelse(`$4',,(linewid/5),`$4')
+ htp = ifelse(`$5',,(linewid/10),`$5')
+ rotp = ifelse(`$6',,0,`$6')
+ End: Project(xdispl,ydispl,zdispl); C: 0.5 between Start and End
+ lenp = length3D(xdispl,ydispl,zdispl)
+ az = atan2(ydispl,xdispl); ae = atan2(zdispl,sqrt(xdispl^2+ydispl^2))
+ wp2 = widp/2; hp2 = htp/2
+# 3D coords of corners (B=back, F=front)
+ f2xyz3D(nwB,rot3Dz(az,rot3Dy(-ae,rot3Dx(rotp, 0,-wp2, hp2))))
+ f2xyz3D(swB,rot3Dz(az,rot3Dy(-ae,rot3Dx(rotp, 0,-wp2,-hp2))))
+ f2xyz3D(seB,rot3Dz(az,rot3Dy(-ae,rot3Dx(rotp, 0, wp2,-hp2))))
+ f2xyz3D(neB,rot3Dz(az,rot3Dy(-ae,rot3Dx(rotp, 0, wp2, hp2))))
+
+ f2xyz3D(nwF,rot3Dz(az,rot3Dy(-ae,rot3Dx(rotp,lenp,-wp2, hp2))))
+ f2xyz3D(swF,rot3Dz(az,rot3Dy(-ae,rot3Dx(rotp,lenp,-wp2,-hp2))))
+ f2xyz3D(seF,rot3Dz(az,rot3Dy(-ae,rot3Dx(rotp,lenp, wp2,-hp2))))
+ f2xyz3D(neF,rot3Dz(az,rot3Dy(-ae,rot3Dx(rotp,lenp, wp2, hp2))))
+# facets
+ M4Facet3D(neF,nwF,swF,seF)
+ M4Facet3D(neB,seB,swB,nwB)
+ M4Facet3D(neF,seF,seB,neB)
+ M4Facet3D(neF,neB,nwB,nwF)
+ M4Facet3D(seF,swF,swB,seB)
+ M4Facet3D(nwF,nwB,swB,swF)
+`$7']')
+
+
+#####################################################
+divert(0)dnl
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/UNO.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/UNO.m4
index 6338c307c07..5baa82677a6 100644
--- a/Master/texmf-dist/doc/latex/circuit-macros/examples/UNO.m4
+++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/UNO.m4
@@ -58,7 +58,7 @@ define(`HeaderPin',`
define(`ATMEGA16U2',`[
Chip: box wid 10*lg_pinsep ht 25*lg_pinsep
- Loopover_(`x',
+ foreach_(`x',
`Arightpin(patsubst(x,;,`,'))',
6;PD0, 7;PD1, 8;PD2, 9;PD3, 10;PD4, 11;PD5, 12;PD6, 13;PD7,
131;nul,
@@ -66,7 +66,7 @@ define(`ATMEGA16U2',`[
132;nul,
133;nul,
14;PB0, 15;PB1, 16;PB2, 17;PB3, 18;PB4, 19;PB5, 20;PB6, 21;PB7)
- Loopover_(`x',
+ foreach_(`x',
`Aleftpin(patsubst(x,;,`,'))',
33;PAD,
100;nul,
@@ -93,14 +93,14 @@ define(`Arightpin',`move to Chip.se+(0,m4Lx*lg_pinsep)
define(`ATMEGA328P',`[
Chip: box wid 10*lg_pinsep ht 23*lg_pinsep
- Loopover_(`x',
+ foreach_(`x',
`Arightpin(patsubst(x,;,`,'))',
2;PD0, 3;PD1, 4;PD2, 5;PD3, 6;PD4, 11;PD5, 12;PD6, 13;PD7,
100;nul,
23;PC0, 24;PC1, 25;PC2, 26;PC3, 27;PC4, 28;PC5,
101;nul,
14;PB0, 15;PB1, 16;PB2, 17;PB3, 18;PB4, 19;PB5)
- Loopover_(`x',
+ foreach_(`x',
`Aleftpin(patsubst(x,;,`,'))',
201;nul, 202;nul, 203;nul, 204;nul, 205;nul, 206;nul, 207;nul, 208;nul,
209;nul,
@@ -204,7 +204,7 @@ divert(0)dnl
USB: [ K: box invis wid dimen_/2 ht 5*lg_pinsep
"USB" rjust at K.e
line thick 1.5 from K.nw to K.ne then to K.se then to K.sw
- Loopover_(`x',
+ foreach_(`x',
`Pin`'m4Lx: K.ne-(0,m4Lx/5*K.ht)
"x" at Pin`'m4Lx ljust above',
1 XUSB, 2 D$-$, 3 D$+$, 4 UGND)
@@ -280,7 +280,7 @@ USB: [ K: box invis wid dimen_/2 ht 5*lg_pinsep
continue to (Here,ICSP1.P2.end) then to ICSP1.P2.end
line from ICSP1.P5.end down 2*del; continue to (TPPB6.x+2*del,Here.y)
TRESET2: Here
- continue to (Here.x,D3.end.y+del) then to (RN1C.end.x-2.5*del,D3.end.y+del)
+ continue to (Here.x,D3.end.y+del) then to (RN1C.end.x-2*del,D3.end.y+del)
continue to (Here,U3.Pin24) then to U3.Pin24.end
G4: ground(at ICSP1.P6.end,,E); {"GND" at last line.c below }
line from ICSP1.P4.end right del then up U3.Pin16.y-ICSP1.P4.y \
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/cbresistor.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/cbresistor.m4
index 152e42758c1..4c3a6d4aee3 100644
--- a/Master/texmf-dist/doc/latex/circuit-macros/examples/cbresistor.m4
+++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/cbresistor.m4
@@ -1,7 +1,7 @@
.PS
# cbresistor.m4
# https://tex.stackexchange.com/questions/709339/create-command-with-decoration-in-tikz
-# https://www.google.com/search?client=firefox-b-d&q=resistor+color+code
+# https://www.digikey.ca/en/resources/conversion-calculators/conversion-calculator-resistor-color-code
cct_init
divert(-1)
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/diamond.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/diamond.m4
index d16cfc91aa3..5ee3dee2c18 100644
--- a/Master/texmf-dist/doc/latex/circuit-macros/examples/diamond.m4
+++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/diamond.m4
@@ -1,25 +1,28 @@
.PS
# diamond.m4
gen_init
-# See LaTeX Graphics Companion pp 57-58
+NeedDpicTools
+# See LaTeX Graphics Companion pp 57-58 and
+# https://tex.stackexchange.com/questions/730392/rotating-triangle
ifdpic(`
-dimen = 1.5
-ratio = 0.9
-n = 30
+ dimen = 1.3
+ ratio = 0.9
+ n = 30
-North: (0,dimen)
-East: (dimen,0)
-South: (0,-dimen)
-West: (-dimen,0)
-
-define(`square',
- `shade(`$1',
- line from North to East then to South then to West then to North)
- ')
+ North: (0,dimen)
+ East: (dimen,0)
+ South: (0,-dimen)
+ West: (-dimen,0)
define(`diamond',`[
for i = 2 to n do {
- square(`$1')
+ ifelse(`$1',,
+ `hsvtorgb(hue,1,1,r0,g0,b0)
+ line from North to East then to South then to West then to North \
+ shaded rgbstring(r0,g0,b0)
+ hue = hue+360/(n-1)',
+ `shade(`$1',
+ line from North to East then to South then to West then to North)')
Tmp: North
North: ratio between East and North
East: ratio between South and East
@@ -27,11 +30,26 @@ for i = 2 to n do {
West: ratio between Tmp and West
}]')
-linethick = 0
-diamond( i % 2 )
-linethick = 0.4
-diamond( (n-i)/(n-2) ) with .w at last [].e+(0.25,0)
+define(`triangle',`[
+for i = 2 to n do {
+ hue = 180+(i-2)/(n-1)*360
+ hsvtorgb(hue,1,1,r0,g0,b0)
+ line from North to East then to West then to North shaded rgbstring(r0,g0,b0)
+ Tmp: North
+ North: ratio between East and North
+ East: ratio between West and East
+ West: ratio between Tmp and West
+ }]')
+ linethick = 0.4
+ diamond( (n-i)/(n-2) )
+ hue = 0
+ diamond with .w at last [].e+(0.125,0)
+ North: (0,dimen*sqrt(3)/2)
+ East: (dimen,-dimen*sqrt(3)/2)
+ West: (-dimen,-dimen*sqrt(3)/2)
+ hue = 180
+ triangle with .w at last [].e-(0.2,0)
',
`box "diamond.m4" "requires" "dpic"')
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/AlogixDPV.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/AlogixDPV.m4
index c09a8a8fb82..819444a171f 100644
--- a/Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/AlogixDPV.m4
+++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/AlogixDPV.m4
@@ -66,7 +66,7 @@ G: [
with .w at last [].sw+(0,-10pt__)
undefine(`extras')
-define(`extras')
+#efine(`extras')
ifdef(`extras',`
Q1: Autologix(Nor(Nor(A,And(B,C)),Nand(Not(B),D))) \
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/CsourceDPV.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/CsourceDPV.m4
index c95aaff3d45..1d982f3f277 100644
--- a/Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/CsourceDPV.m4
+++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/CsourceDPV.m4
@@ -1,6 +1,7 @@
.PS
# Csource.m4
cct_init(svg_font(sans-serif,11bp__,2bp__))
+maxpswid = 10
# The default line separation is a bit small if the top line contains
# subscripts, so we space stacked lines explicitly:
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/JackDPV.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/JackDPV.m4
index 6af8b6b3017..781d6837e75 100644
--- a/Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/JackDPV.m4
+++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/JackDPV.m4
@@ -1,75 +1,60 @@
.PS
-# `Jack.m4'
-cct_init(svg_font(sans-serif,10bp__))
+# `JackDPV.m4'
+cct_init
+# https://tex.stackexchange.com/questions/720858/is-there-a-tikz-or-circuitikz-headphone-jack-connector-diagram
P: [
P1: plug
- "A" wid 0.1 at P1.A rjust
- "B" at P1.B rjust
- "TB" at P1.TB ljust above
- "TA" at P1.TA ljust below
+ foreach_(`Y',`"svg_it(Y)" wid 0.1 at P1.Y rjust',A,B)
+ "svg_it(TB)" at P1.TB ljust above
+ "svg_it(TA)" at P1.TA ljust below
+
P2: plug(,R) with .B at P1.A+(0.85,0)
- "A" wid 0.1 at P2.A rjust
- "B" at P2.B rjust
- P3: plug(,3) with .A at P2.B+(0.85,0)
- "A" at P3.A rjust
- "B" at P3.B rjust
- "C" at P3.C rjust
- P4: plug(L,3R) with .A at P3.A+(1,0)
- "A" wid 0.1 at P4.A ljust
- "B" at P4.B ljust
- "C" at P4.C ljust
- `"plug"' below at P1.s+(0,-0.1)
- `"plug(,R)"' below at P2.s+(0,-0.1)
- `"plug(,3)"' below at P3.s+(-0.1,-0.1)
- `"plug(L,3R)"' below at P4.s+(0.1,-0.1)
+ foreach_(`Y',`"svg_it(Y)" wid 0.1 at P2.Y rjust',A,B)
+
+ P4: plug(,3) with .A at P2.B+(0.85,0)
+ foreach_(`Y',`"svg_it(Y)" at P4.Y rjust',A,B,C)
+
+ P5: plug(L,3R) with .A at P4.A+(1,0)
+ foreach_(`Y',`"svg_it(Y)" wid 0.1 at P5.Y ljust',A,B,C)
+ "svg_tt(`plug')" below at P1.s+(0,-0.1)
+ "svg_tt(`plug(,R)')" below at P2.s+(0,-0.1)
+ "svg_tt(`plug(,3)')" below at P4.s+(-0.1,-0.1)
+ "svg_tt(`plug(L,3R)')" below at P5.s+(0.1,-0.1)
]
-L: [
+L: [ right_
J1: jack
thinlines_
- "L" wid 0.1 rjust at J1.L
- arrow <- right 0.1 from J1.F; "F" ljust
- arrow <- down 0.1 from J1.G then left 0.1 ; "G" rjust
- thicklines_
- J2: jack(,LMBS) with .F at J1.F+(1.2,0)
- thinlines_
- "L" rjust at J2.L
- arrow <- from J2.LM left 0.25; "LM" rjust
- arrow <- from J2.LB left 0.25; "LB" rjust
- "S" rjust at J2.S
- thicklines_
- J3: jack(L,RLS) with .F at J2.F+(0.4,0)
- thinlines_
- "L" ljust at J3.L
- "S" ljust at J3.S
+ "svg_it(L)" wid 0.1 rjust at J1.L
+ arrow <- right 0.1 from J1.F; "svg_it(F)" ljust
+ arrow <- down 0.1 left 0.1 from J1.G ; "svg_it(G)" rjust
+ arrow <- up 0.1 left 0.1 from J1.H ; "svg_it(H)" rjust
thicklines_
- J4: jack(L,RLBLMLMS) with .F at J3.F+(1,0)
- thinlines_
- "L1" ljust at J4.L1
- arrow <- right 0.3 from J4.LM1; "LM1" ljust
- "L2" ljust at J4.L2
-# arrow <- right 0.3 from J4.LM2; "LM2" ht 11pt__ ljust
- arrow <- right 0.3 from J4.LM2; "LM2" ljust
- "S" ljust at J4.S
- "L" ljust at J4.L
- arrow <- right 0.2 from J4.LB ; "LB" ljust
- J5: jack(,RSBSMLB) with .F at J4.F+(1.95,0)
+
+ J3: jack(L,RLS) with .F at J1.F+(0.4,0)
+ "svg_it(L)" ljust at J3.L
+ "svg_it(S)" ljust at J3.S
+
+ J2: jack(,LMBS) with .F at J3.F+(1.5,0)
thinlines_
- "L" rjust at J5.L
- "S" rjust at J5.S
- "S1" rjust at J5.S1
- arrow <- left 0.3 from J5.SM1; "SM1" rjust
- arrow <- left 0.25 then left 0.1 down 0.05 from J5.LB; "LB" rjust
- arrow <- left 0.25 then left 0.1 up 0.05 from J5.SB; "SB" rjust
+ "svg_it(L)" rjust at J2.L
+ arrow <- from J2.LM left 0.25; "svg_it(L)M" wid 0.18 rjust
+ arrow <- from J2.LB left 0.25; "svg_it(L)B" rjust
+ "svg_it(S)" rjust at J2.S
thicklines_
- `"jack"' below at J1.s+(0,-0.15)
- `"jack(,LMBS)"' at (J2,last "")
- `"..(L,RLS)"' at (J3,last "")
- `"..(L,RLBLMLMS)"' at (J4,last "")
- `"..(,RSBSMLB)"' wid 72bp__ at (J5,last "")
-] with .nw at P.sw + (0,0.1)
+ J11: jack(,LMBSX) with .w at last [].e+(0.5,0)
+ foreach_(`Y',`"svg_small(svg_it(Y))" rjust at J11.Y.w', L,LM,LB,S,G)
+
+ J8: jack(,XLLBSSBC) with .sw at last [].se+(0.75,0)
+ foreach_(`Y',`"svg_small(svg_it(Y))" rjust at J8.Y.w', L,L1,LB1,S,S1,SB1,G,C)
+
+ "svg_tt(`jack')" below at J1.s+(0,-0.15)
+ "svg_tt(`..(L,RLS)')" at (J3,last "")
+ "svg_tt(`..(,LMBS)')" at (J2,last "")
+ "svg_tt(`..(,LMBSX)')" at (J11,last "")
+ "svg_tt(`..(,XLLBSSBC)')" wid 80bp__ at (J8, last "")
+] with .nw at last [].sw + (0,0.1)
- command "</g>" # end font
.PE
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/LT3724DPV.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/LT3724DPV.m4
new file mode 100644
index 00000000000..21d4991aea4
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/LT3724DPV.m4
@@ -0,0 +1,88 @@
+.PS
+# LT3724.m4
+# https://pdf1.alldatasheet.com/datasheet-pdf/view/547351/LINER/LT3724.html
+
+cct_init
+include(icsDPV.m4)
+
+ linethick = 1.2
+
+svg_font(sans-serif,9bp__)
+
+define(`pinsep',`svg_baselineskip*2.5')
+define(`hght',`9*pinsep')
+define(`wdth',`0.6*hght')
+
+[
+ Q: LT3724
+
+ line left_ dimen_/2 from Q.SYNC; ground
+ line left_ dimen_/2 from Q.FSET
+ R7: resistor(down_ dimen_); rlabel(,"49.9 k"); ground(,T)
+ line left_ dimen_ from Q.VC
+ {dot; capacitor(down_ pinsep); llabel(,"120 p"); ground(,T)}
+ resistor(left_ dimen_*5/4); rlabel(,"10 k")
+ capacitor(down_ pinsep); llabel(,"680 p"); ground(,T)
+ line left_ dimen_/2 from Q.BURST_EN then down_ Q.BURST_EN.y-Q.VFB.y; dot
+
+ DL: dot(at Q.VFB-(dimen_*13/4,0))
+ resistor(down_ pinsep*2); llabel(,"14.7 k"); ground(,T)
+
+ line left_ dimen_/2 from Q.VIN then up_ Q.n.y-Q.VIN.y+dimen_/3; VINL: dot
+ line left_ dimen_*3/2 from Q.SHDN; dot
+ {resistor(down_ dimen_); rlabel(,"82.5 k"); H: ground(,T)
+ capacitor(left_ dimen_ from Q.CSS); rlabel(,"1000 p")
+ line to (Here,H); ground(,T)}
+ resistor(up_ to (Here,VINL)); rlabel(,"1 M"); dot
+ dot(at (Here.x-dimen_,Here.y))
+ {capacitor(down_ pinsep); {"22 svg_micro" at last [].e ljust}
+ line left_ dimen_}
+ dot(at (Here.x-dimen_,Here.y))
+ {capacitor(down_ pinsep); {"68 svg_micro" at last [].e ljust}
+ dot; ground}
+ VIN: (Here.x-dimen_/2,Here.y); {line invis left_ 60bp__ from VIN}
+ "V`'svg_sub(IN)" at VIN rjust
+ "36 V TO 60 V" at VIN+(0,-svg_baselineskip*1.2) rjust
+
+ line right_ dimen_/2 from Q.SGND; dot; ground(at (Here,R7.end),T)
+ line to (Here,Q.PGND) then to Q.PGND
+ dot(at Q.VCC+(dimen_/2,0))
+ { capacitor(down_ pinsep); llabel(,"1 svg_micro"); dot }
+ dot(at Here+(dimen_*3/4,0))
+ { reversed(`diode',to (Here,Q.SENSEM)); DV: dot}
+ { line to Q.VCC }
+ diode(right_ dimen_*2/3); DP: dot
+ { line to (Here,Q.BOOST) then to Q.BOOST }
+ capacitor(right_ dimen_); {"22 svg_micro" at last [].n above}
+ DZ: dot; reversed(`diode',down_ pinsep,Z); ground(,T)
+ "PDS5100H" at last [].w rjust below
+ resistor(right_ from Q.SW to (DP,Q.SW)); llabel(,"10")
+ line to (DZ,Here); dot
+ {up_; M1: mosfet(,,TEDSQuB) with .e at (DZ,Q.TG); "Si850DP" at M1.e ljust
+ line from M1.G to Q.TG}
+ line from DZ to M1.S
+ line from M1.D up_ VIN.y-M1.D.y then to VIN
+ inductor(right_ dimen_ from DZ); llabel(,"10 svg_micro"); dot
+ {line to (Here,Q.SENSEP) then to Q.SENSEP}
+ resistor(right_ dimen_); llabel(,"0.015"); DQ: dot
+ line from Q.VFB to DL-(dimen_/2,0)
+ resistor(down_ Here.y-R7.end.y+dimen_/2); llabel(,"130 k")
+ line to (DV,Here) then to DV
+ line from Q.SENSEM to (DQ,Q.SENSEM) then to DQ
+ { dot(at DQ+(dimen_/2,0))
+ capacitor(down_ pinsep); llabel(,"68 svg_micro"); ground(,T) }
+ { dot(at DQ+(dimen_*3/2,0))
+ capacitor(down_ pinsep); llabel(,"33 svg_micro"); ground(,T) }
+ line from DQ right_ dimen_*2.25; {line invis right_ 24bp__}
+ VOUT: Here
+ "V`'svg_sub(OUT)" at VOUT ljust
+ "12 V" at VOUT+(0,-svg_baselineskip*1.2) ljust
+ "50 W" at VOUT+(0,-svg_baselineskip*1.2*2) ljust
+
+ "High voltage step-down regulator" ljust at (M1.e.x+10bp__,Q.n.y) \
+ "48 V TO 12 V, 50 W" ljust
+ ]
+#showbox_
+
+command "</g>" # font
+.PE
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/LT3757DPV.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/LT3757DPV.m4
new file mode 100644
index 00000000000..ab75d1a5b92
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/LT3757DPV.m4
@@ -0,0 +1,274 @@
+.PS
+# LT3757DPV.m4
+# https://html.alldatasheet.com/html-pdf/349964/LINER/LT3757/1234/8/LT3757.html
+# https://en.wikipedia.org/wiki/Single-ended_primary-inductor_converter
+# https://www.analog.com/media/en/technical-documentation/data-sheets/lt3757-3757a.pdf
+#
+# This diagram does not contain much repetitive structure so the code is long
+# but straightforward.
+cct_init
+include(icsDPV.m4)
+ linethick = 1.2
+
+ifelse(1,1,`
+# This draws the symbolic chip with external circuitry
+svg_font(sans-serif,9bp__)
+
+define(`pinsep',`svg_baselineskip*2.5')
+define(`hght',`9*pinsep')
+define(`wdth',`0.6*hght')
+
+Q1: LT3757
+
+ resistor(down_ dimen_*3/4 from Q1.VC); llabel(,22 k)
+ capacitor(down_ dimen_/2); llabel(6.8 nF); GNDL: dot
+ line from Q1.SS left_ dimen_/2; continue down_ to (Here,Q1.VC)
+ capacitor(to (Here,GNDL)); llabel(0.1 svg_micro`'F); dot
+ up_; M1: mosfet(,,TEDSQuB) with .G at Q1.GATE
+ dot(at (M1.S,Q1.SENSE)); {line to Q1.SENSE}; line from M1.S to (M1.S,Q1.VC)
+ resistor(down_ to (Here,GNDL)); llabel(,0.01 svg_ohm); dot
+ line from Q1.GND to (Q1.GND,GNDL); dot
+ capacitor(down_ from Q1.INTVCC to (Q1.INTVCC,GNDL))
+ llabel(,"4.7 svg_micro(F)" ljust "10 V" ljust "X5R" ljust); dot
+ ground
+ line up_ dimen_/3 from M1.D; DD: dot
+ diode(right_ dimen_,Z); DE: dot
+ { resistor(down_ to (Here,Q1.FBX)); llabel(,"226 k")
+ line to(Here,Q1.VC); resistor(to (Here,GNDL)); llabel(,"16.2 k"); dot }
+ dot(at Here+(dimen_,0))
+ { capacitor(down_ to (Here,GNDL),C+);
+ llabel(,"47 svg_micro(F)" ljust "35 V" ljust "x2"); dot }
+ dot(at Here+(dimen_,0))
+ { capacitor(down_ to (Here,GNDL));
+ llabel(,"10 svg_micro(F)" ljust "25 V" ljust "X5R"); GG: dot; ground }
+ line from DE to Here+(dimen_/2,0); {line invis right dimen_}
+ "V`'svg_sub(OUT)" ljust at Here+(2bp__,5bp__) "24 V" ljust "2 A" ljust
+ line from Q1.RT left_ dimen_; continue down_ to (Here,Q1.VC)
+ resistor(to (Here,GNDL)); rlabel(,"41.2 k" rjust "300 kHz" rjust)
+ line to GG
+ line from Q1.VIN up_ dimen_/3; dot
+ dot(at (Q1.w,Here)-(dimen_,0))
+ {resistor(down_ to (Here,Q1.SHU)); llabel(,"200 k"); dot; {line to Q1.SHU}
+ resistor(down_ to (Here,Q1.SYNC)); llabel(,"43.2 k"); dot
+ {line to Q1.SYNC}; ground }
+ dot(at Here-(dimen_,0))
+ {capacitor(down_ to (Here,Q1.SHU))
+ llabel(,"10 svg_micro(F)" ljust "25 V" ljust "X5R" ljust); ground }
+ VIN: Here+(-dimen_/2,0); {line invis left_ 70bp__}
+ {"V`'svg_sub(IN)" at VIN rjust "8 V TO 16 V" rjust}
+ line from VIN to (DD,VIN); inductor(down_ to DD); llabel(,"10 svg_micro(H)")
+
+ "High efficiency" ljust below at (DE,Q1.n) "boost converter" ljust
+
+ command "</g>" # end font
+',`
+# The operational diagram of the chip interior with external circuitry
+maxpswid = 10
+
+ textht = 5bp__
+ lw = dimen_/4
+
+ define(`Pin',`P`'in`$1': box wid dimen_/3 ht dimen_/3 "`$1'" fill_(1)')
+
+ boardw = 13.5
+ boardh = 14
+ Board: box thick 2 wid boardw*dimen_ ht boardh*dimen_
+ define(`coord',`Board.sw+(`$1',`$2')*dimen_')
+ A11: opamp at coord(2.5,boardh-5)
+ LH_symbol(,wdth=0.5) at A11.C; "A11" at A11.NE above ljust
+ A12: opamp at A11+(0,-A11.ht*5/4); LH_symbol(,wdth=0.5) at A12.C
+ "A12" at A12.NE above ljust
+ D1112: dot(at (A11.In2.x-lw,(A11.y+A12.y)/2))
+ line from A11.In2 to (D1112,A11.In2) then to (D1112,A12.In1) then to A12.In1
+ G6: OR_gate with .w at (A11.Out.x+3*L_unit,(A11.y+A12.y)/2); {"G6" at G6}
+ line from G6.In1 left_ lw*5/4 then up A11.Out.y-G6.In1.y then to A11.Out
+ line from G6.In2 left_ lw*5/4 then up A12.Out.y-G6.In2.y then to A12.Out
+ line left_ lw from A11.In1; { "1.72 V" rjust }
+ line left_ lw from A12.In2; { "-0.88 V" rjust }
+
+ up_; Q3: bi_tr(,R) with .C at G6.Out+(3*lw,A11.ht*2)
+ "Q3" at Q3.ne above rjust
+ ground(at Q3.E); line up_ lw then left_ lw from Q3.C; Q3C: dot
+ S2: source(down_ elen_ with .end at Q3C,G); "2.5 V" at S2.n above
+ rlabel(,"S2"); larrow; "10 svg_micro(A)" at last arrow ljust
+ left_; G4: OR_gate(3) with .Out at Q3.B+(lw,0); line from G4.Out to Q3.B
+ G3: NAND_gate with .Out at G4.In2+(lw*3/2,0); line from G3.Out to G4.In2
+ line from G3.In2 right_ lw then up_ A11.Out.y-G6.In1.y # then right_ lw
+ left_; A9: opamp with .Out at Here
+ left_; A8: opamp at A9-(0,A9.ht*5/4); LH_symbol(,wdth=0.5) at A8.C
+ "A8" at A8.SE above rjust
+ line from G3.In1 to (A8.Out,G3.In1) then to A8.Out
+ D89: dot(at (A9.In2.x+lw,(A9.y+A8.y)/2))
+ line from A9.In1 to (D89,A9.In1) then to (D89,A8.In2) then to A8.In2
+ line from A9.In2 right_ lw; "17.5 V" ljust above at A9.In2
+ line from A8.In1 right_ lw;"2.7 V UP" ljust "2.6 V DOWN" ljust
+
+ line from G4.In1 right_ lw then down_ 3/2*G3.ht then right_ lw
+ box wid boxwid*2/3 ht boxht*2/3 "TSD" "165 svg_deg`'C"
+
+ D8: dot(at D89+(boxwid*1.75,0))
+ down_; INTVcc: mosfet(,R,TEDSQdB) with .D at D8+(0,lw)
+ B72: box ht boxht/3 "7.2 V LDO" with .e at INTVcc.G
+ dot(at (B72,D89)); line to B72.s; line from D8 to INTVcc.D
+ Pin(8) at (Board.e,D8); "INTV`'svg_sub(CC)" at Pin8.n+(0,2bp__) above rjust
+ line from D89 to Pin8.w
+ line from B72.n up_ lw/2
+ CL: box ht boxht*2/3 "CURRENT" "LIMIT" with .s at Here
+ line from CL.e to (INTVcc.S,CL); dot
+
+ line from G4.In3 right_ lw then up_ CL.n.y-G4.In3.y-boxht/2+lw
+ UVLO: box "INTERNAL" "REGULATOR" "AND UVLO" with .s at Here
+ "UVLO" at UVLO.sw below ljust
+ line from UVLO.e to (D8,UVLO.e); dot
+ Pin(10) at (Here,Board.n); "V`'svg_sub(IN)" at Pin10.se below ljust
+ line from INTVcc.S to Pin10.s
+
+ line up_ 2*lw from UVLO.n; DUV: dot; left_
+ A10: opamp(,,,,R) at (UVLO.e,Here); LH_symbol at A10.C
+ "A10" at A10.SE above rjust
+ line from A10.In1 right_ lw; "1.22 V" ljust
+ arrow from A10.Out left A10.Out.x-UVLO.w.x+lw
+ S1: source(down_ elen_ with .c at Here+(-dimen_/6,0),G)
+ rarrow; "I`'svg_sub(S1)" rjust at last arrow above "2 svg_micro(A)" rjust
+ ground(at S1.end,T)
+ line from A10.In2 right_ lw then up_ S1.start.y-A10.In2.y
+ dot; { "SHDN/UVLO" at last [].e ljust }
+ { line from last [].e+(textoffset,3bp__) right_ 16bp__ }
+ { line to S1.start }
+ { Pin(9) at (Here,Board.n)}; line to Pin9.s
+
+ right_; A7: opamp with .n at (UVLO.x,G6.y-lw); "VC" at A7.nw rjust
+ line from A7.Out right_ A8.Out.x-A7.Out.x+lw
+ G5: OR_gate(3) with .In2 at Here
+ line from G5.In1 left_ lw then up G6.Out.y-G5.In1.y then to G6.Out; right_
+ G2: opamp(right_ dimen_,"","") with .NE at (D8.x,G5.y+A9.ht/4)
+ ground(at G2.SE)
+ Pin(7) at (Board.e,G2); "GATE" at Pin7.n above rjust
+ line from G2.E to Pin7.w; line from D8 to G2.NE
+ line from G2.w left_ dimen_*2/3
+ SR1: box ht G2.ht wid boxwid*2/3; "SR1" at SR1.n above
+ "R" at SR1.w ljust; "O" at SR1.e rjust; "S" at SR1.s above
+ line right_ from G5.Out to SR1.w
+
+ Pin(3) at (Q3C,Board.s); line from Q3C to Pin3.n; "SS" at Pin3.ne above ljust
+ D67: dot(at (G6.Out+(lw,0),A7.In1)); line to A7.In1
+ dot(at (Q3C.x,D67.y-dimen_)); down_
+ Q2: bi_tr(,R,P) with .B at Here; ground(at Q2.C); "Q2" at Q2.e ljust
+ line from Q2.E to (Q2.E,A7.In1); dot
+
+ A1: opamp(right_ dimen_,,,,R) at A12+(0,-3/2*dimen_); T1: dot(at (D67,A1))
+ A2: opamp(right_ dimen_,,,,R) at A1+(0,-A1.ht*5/4)
+ D12: dot(at (A1.w.x-lw,(A1.y+A2.y)/2))
+ Pin(2) at (Board.w,D12); line from Pin2.e to D12; "FBX" at Pin2.ne above ljust
+ line from A1.In2 to (D12,A1.In2) then to (D12,A2.In1) then to A2.In1
+ line from A1.In1 left_ lw; "1.6 V" rjust
+ line from A2.In2 left_ lw; "-0.8 V" rjust
+
+ Pin(1) at (Board.w,Q3C); "V`'svg_sub(CC)" at Pin1.ne above ljust
+ S3: source(down_ elen_ at ((Board.w+Pin3)/2,S2),G);rlabel(,"S3")
+ larrow("I`'svg_sub(S3)")
+ "2.5 V" at S3.start above; line from S3.end to (S3,Pin1); dot
+
+ diode(from T1 to A1.Out)
+ D2: diode(from (T1,A2) to A2.Out)
+ line from D2.start to (D2.start,Pin1) then to Pin1.e
+
+ left_; A6: opamp(,,,,R) with .Out at (SR1,A1)
+ A5: opamp at (A6,A6+(0,-A6.ht*5/4))
+ line from A6.In2 right_ lw; "108 mV" ljust
+ line from A5.In2 right_ lw; { dot; line to (Here,A6.In1) then to A6.In1 }
+ {Pin(6) at (Board.e,Here)}; line to Pin6.w; "SENSE" at Pin6.n above rjust
+ line from A5.In1 right_ lw then down_ dimen_
+ dot; ground; {Pin(11) at (Board.e,Here)}; line to Pin11.w
+ "GND" at Pin11.n above rjust
+ line from G5.In3 left_ lw then down G5.In3.y-A6.y then to A6.Out
+
+ Summer: circle rad 0.15 "svg_Sigma" with .w at (G5.Out,A5)
+ line from A7.In2 left lw then down_ A7.In2.y-Summer.y then to Summer.w
+ line from Summer.e to A5.Out
+ "V`'svg_sub(ISENSE)" at Summer.ne above ljust; "SLOPE" at Summer.nw above rjust
+ "RAMP" at Summer.sw below rjust
+ line down_ 2*lw from Summer.s
+ box ht boxht*2/3 with .n at Here "RAMP" "GENERATOR"
+ {[ line for_(1,3,1,`up_ dimen_/4 right_ dimen_/6 then down_ dimen_/4 then') \
+ up_ dimen_/4 right_ dimen_/6 ] with .sw at last box.n+(lw/2,lw/2)}
+ line down_ lw*3/2
+ OSC: box ht boxht*2/3 \
+ "100 kHZ-1 MHZ" "OSCILLATOR"
+ {[line right_ dimen_/2; [for_(1,4,1,`line from (m4x*dimen_/10,0) \
+ up_ dimen_/4')] with .s at last line ] with .sw at OSC.n+(lw/2,2bp__)}
+ line right_ from OSC.e to (SR1,OSC.e) then to SR1.s
+ G1: OR_gate with .Out at OSC.w+(-2*lw,0); line from G1.Out to OSC.w
+ A3: opamp with .Out at G1.In1+(-lw,0); line from A3.Out to G1.In1
+ line left_ lw from A3.In1; "1.25 V" rjust
+
+ line from OSC.s down_ A2.ht*3/4; up_
+ Q1: bi_tr with .C at Here; right_
+ A4: opamp(,,,,R) with .E at Q1.B; "+" at A4.w +(4pt__,0)
+ "FREQ" at A4.SE+(0,-lw) below ljust "PROG" ljust
+ line from A4.In2 left lw then down_ A4.ht/2; continue to (Q1.E,Here); dot
+ {Pin(4) at (Here,Board.s); "R`'svg_sub(T)" at Pin4.ne above ljust};
+ line from Q1.E to Pin4.n
+ line from A4.In1 left_ lw; "1.25 V " above
+ Pin(5) at (A4.w.x-3*lw,Board.s.y); "SYNC" at Pin5.ne above ljust
+ line from Pin5.n to (Pin5,G1.In2) then to G1.In2
+ line from A3.In2 left_ lw; continue to (Here,A4.w) then to A4.w
+ "FREQ" at (A3.In2.x-lw,A4.w.y+dimen_/2) ljust above "FOLD" ljust "BACK" ljust
+
+ D3: dot(at A3.In2-(lw,0)); right_
+ FFB: box ht boxht*2/3 "FREQUENCY" "FOLDBACK" at (A2,D3); line to D3
+ DFFB: dot(at Pin2.e+(2*lw,0))
+ line from FFB.w to (DFFB,FFB); continue to (Here,D1112) then to D1112
+ DF: dot(at (DFFB,FFB)); line down_ boxht
+ resistor(right_ elen_); llabel(,"R5") rlabel(,"8 k")
+ diode(right_ dimen_/3); llabel(,"D2")
+ reversed(`diode',right_ dimen_*2/3,Z); llabel(,"D3"); ground
+
+ foreach_(`gate',`"gate" at gate.C',A1,A2,A3,A4,A5,A6,A7,A9,G1,G2,G3,G4,G5)
+
+ line from Pin9.n up_ dimen_*2/3; dot
+ {resistor(left_ dimen_); rlabel(,"R4"); ground}
+ resistor(right_ dimen_); llabel(,"R3"); line up_ dimen_/2; VCC: dot
+ dot(at Here+(dimen_/2,0)); {capacitor(down_ dimen_/2,C+)
+ llabel(,"C`'svg_sub(IN)"); ground(,T)}
+ L1D: dot(at (Pin10,Here)); {line to Pin10.n}; {line to (Board.n,Here)
+ "V`'svg_sub(IN)" rjust}
+
+ line from Pin8.e right_ dimen_/4; capacitor(down_ dimen_/3)
+ {"C`'svg_sub(VCC)" at Pin8.ne ljust above}; ground
+ up_; M1: mosfet(,,TEDSQuB) with .G at Pin7.e; "M1" at M1.n above
+ inductor(right_ from L1D to (Board.e.x+lw,L1D.y),,,M); llabel(,"L1"); DL1: dot
+ line down_ 3*dimen_; continue to (M1.D,Here) then to M1.D
+ line from M1.S to (M1.S,Pin6); dot; {line to Pin6.e}
+ resistor(down_ to (Here,Pin11)); llabel(,"R`'svg_sub(SENSE)"); dot
+ ground; line to Pin11.e
+
+ capacitor(from DL1 right_ dimen_/2); llabel(,"C`'svg_sub(DC)"); T2: dot
+ diode(right_ dimen_,Z); { line right_ dimen_; "V`'svg_sub(OUT)" above}
+ dot(at Here+(dimen_/2,0)); line down_ lw; dot;
+ P3: parallel_(`Sep=dimen_*2/3; capacitor(down_ elen_)
+ rlabel("C`'svg_sub(OUT2)"); line down_ elen_/3',
+ `line down_ elen_/3; capacitor(down_ elen_*2/3,C)
+ llabel("C`'svg_sub(OUT1)")',
+ `resistor(down_ elen_*2/3); llabel(,"R2"); dot
+ { line left_ lw; "FBX" above }
+ R1: resistor(down_ elen_*2/3); llabel(,"R1"); dot')
+ dot; ground
+ inductor(from T2 to (T2,P3.E3.R1.end),,,M); rlabel(,"L2")
+ line to P3.E3.R1.end
+
+ resistor(from Pin4.s down_ dimen_*2/3); llabel(,"R`'svg_sub(T)"); ground(,T)
+ capacitor(from Pin3.s down_ dimen_*2/3); llabel(,"C`'svg_sub(SS)"); ground(,T)
+ line from Pin2.w left_ lw; "FBX" rjust
+ TV: dot(at Pin1-(dimen_/2,0))
+ resistor(down_ dimen_*2/3); llabel(,"R`'svg_sub(C)")
+ capacitor(down_ dimen_*2/3); llabel("C`'svg_sub(C1)"); dot; ground
+ line left_ dimen_*0.6
+ capacitor(down_ from (Here,TV) to Here); llabel("C`'svg_sub(C2)")
+ line from Pin1.w to last line.start
+
+ move to Board.se+(5bp__,20bp__)
+ "LT3757 block diagram" ljust "working as a" ljust "SEPIC converter" ljust
+')
+
+.PE
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/Makefile b/Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/Makefile
index f9e04756c78..78303674c5e 100644
--- a/Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/Makefile
+++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/Makefile
@@ -86,7 +86,8 @@ CCTDPV = \
ex01DPV.svg ex02DPV.svg ex03DPV.svg ex04DPV.svg ex05DPV.svg ex06DPV.svg \
ex08DPV.svg ex09DPV.svg ex10DPV.svg ex11DPV.svg ex12DPV.svg \
ex15DPV.svg ex16DPV.svg ex18DPV.svg ex21DPV.svg \
- expDPV.svg fetDPV.svg graysurfDPV.svg keyboardDPV.svg lcctDPV.svg \
+ expDPV.svg fetDPV.svg graysurfDPV.svg keyboardDPV.svg \
+ lcctDPV.svg LT3757DPV.svg \
pwrsupplyDPV.svg quickDPV.svg randomDPV.svg recycleDPV.svg relaycoilDPV.svg \
roseDPV.svg sfgDPV.svg shapesDPV.svg SmithchartDPV.svg paletteDPV.svg \
thyristorDPV.svg ujtDPV.svg UNODPV.svg wormDPV.svg XORDPV.svg Np.svg
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/SwitchesDPV.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/SwitchesDPV.m4
index 47b8edbea9c..dfff0e3a6f5 100644
--- a/Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/SwitchesDPV.m4
+++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/SwitchesDPV.m4
@@ -141,7 +141,7 @@ movewid = 0.25
"svg_tt(`circle=\"M\")')" ljust}
move right_
dswitch(,,WBcDIGC,circle="M")
- {"svg_tt(`(,,WBcDIGC,')" ljust at last line.start+(0,-15bp__) \
+ {"svg_tt(`(,,WBcDIGC,')" wid 72bp__ ljust at last line.start+(0,-15bp__) \
"svg_tt(`circle=\"M\")')" ljust}
}
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/UNODPV.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/UNODPV.m4
index 3e5fb11e934..1ea032520d2 100644
--- a/Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/UNODPV.m4
+++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/UNODPV.m4
@@ -56,7 +56,7 @@ define(`HeaderPin',`
define(`ATMEGA16U2',`[
Chip: box wid 10*lg_pinsep ht 25*lg_pinsep
- Loopover_(`x',
+ foreach_(`x',
`Arightpin(patsubst(x,;,`,'))',
6;PD0, 7;PD1, 8;PD2, 9;PD3, 10;PD4, 11;PD5, 12;PD6, 13;PD7,
131;nul,
@@ -64,7 +64,7 @@ define(`ATMEGA16U2',`[
132;nul,
133;nul,
14;PB0, 15;PB1, 16;PB2, 17;PB3, 18;PB4, 19;PB5, 20;PB6, 21;PB7)
- Loopover_(`x',
+ foreach_(`x',
`Aleftpin(patsubst(x,;,`,'))',
33;PAD,
100;nul,
@@ -91,14 +91,14 @@ define(`Arightpin',`move to Chip.se+(0,m4Lx*lg_pinsep)
define(`ATMEGA328P',`[
Chip: box wid 10*lg_pinsep ht 23*lg_pinsep
- Loopover_(`x',
+ foreach_(`x',
`Arightpin(patsubst(x,;,`,'))',
2;PD0, 3;PD1, 4;PD2, 5;PD3, 6;PD4, 11;PD5, 12;PD6, 13;PD7,
100;nul,
23;PC0, 24;PC1, 25;PC2, 26;PC3, 27;PC4, 28;PC5,
101;nul,
14;PB0, 15;PB1, 16;PB2, 17;PB3, 18;PB4, 19;PB5)
- Loopover_(`x',
+ foreach_(`x',
`Aleftpin(patsubst(x,;,`,'))',
201;nul, 202;nul, 203;nul, 204;nul, 205;nul, 206;nul, 207;nul, 208;nul,
209;nul,
@@ -204,7 +204,7 @@ divert(0)dnl
USB: [ K: box invis wid dimen_/2 ht 5*lg_pinsep
"USB" rjust at K.e
line thick 1.5 from K.nw to K.ne then to K.se then to K.sw
- Loopover_(`x',
+ foreach_(`x',
`Pin`'m4Lx: K.ne-(0,m4Lx/5*K.ht)
"x" at Pin`'m4Lx ljust above',
1 XUSB, 2 D`'svg_it(-), 3 D`'svg_it(+), 4 UGND)
@@ -282,7 +282,7 @@ USB: [ K: box invis wid dimen_/2 ht 5*lg_pinsep
continue to (Here,ICSP1.P2.end) then to ICSP1.P2.end
line from ICSP1.P5.end down 2*del; continue to (TPPB6.x+2*del,Here.y)
TRESET2: Here
- continue to (Here.x,D3.end.y+del) then to (RN1C.end.x-2.5*del,D3.end.y+del)
+ continue to (Here.x,D3.end.y+del) then to (RN1C.end.x-2*del,D3.end.y+del)
continue to (Here,U3.Pin24) then to U3.Pin24.end
G4: ground(at ICSP1.P6.end,,E); {"GND" at last line.c below }
line from ICSP1.P4.end right del then up U3.Pin16.y-ICSP1.P4.y \
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/diamondDPV.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/diamondDPV.m4
index 3c5e0f5bfea..a11a413e0b0 100644
--- a/Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/diamondDPV.m4
+++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/diamondDPV.m4
@@ -1,24 +1,28 @@
.PS
-# diamond.m4
-# See LaTeX Graphics Companion pp 57-58
+# diamondDPV.m4
gen_init
-dimen = 1.5*scale
-ratio = 0.9
-n = 30
+NeedDpicTools
+# See LaTeX Graphics Companion pp 57-58 and
+# https://tex.stackexchange.com/questions/730392/rotating-triangle
+ifdpic(`
+ dimen = 1.3
+ ratio = 0.9
+ n = 30
-North: (0,dimen)
-East: (dimen,0)
-South: (0,-dimen)
-West: (-dimen,0)
-
-define(`square',
- `shade(`$1',
- line from North to East then to South then to West then to North)
- ')
+ North: (0,dimen)
+ East: (dimen,0)
+ South: (0,-dimen)
+ West: (-dimen,0)
define(`diamond',`[
for i = 2 to n do {
- square(`$1')
+ ifelse(`$1',,
+ `hsvtorgb(hue,1,1,r0,g0,b0)
+ line from North to East then to South then to West then to North \
+ shaded rgbstring(r0,g0,b0)
+ hue = hue+360/(n-1)',
+ `shade(`$1',
+ line from North to East then to South then to West then to North)')
Tmp: North
North: ratio between East and North
East: ratio between South and East
@@ -26,9 +30,27 @@ for i = 2 to n do {
West: ratio between Tmp and West
}]')
-linethick = 0
-diamond( i % 2 )
-linethick = 0.4
-diamond( (n-i)/(n-2) ) with .w at last [].e+(0.25,0)
+define(`triangle',`[
+for i = 2 to n do {
+ hue = 180+(i-2)/(n-1)*360
+ hsvtorgb(hue,1,1,r0,g0,b0)
+ line from North to East then to West then to North shaded rgbstring(r0,g0,b0)
+ Tmp: North
+ North: ratio between East and North
+ East: ratio between West and East
+ West: ratio between Tmp and West
+ }]')
+
+ linethick = 0.4
+ diamond( (n-i)/(n-2) )
+ hue = 0
+ diamond with .w at last [].e+(0.125,0)
+ North: (0,dimen*sqrt(3)/2)
+ East: (dimen,-dimen*sqrt(3)/2)
+ West: (-dimen,-dimen*sqrt(3)/2)
+ hue = 180
+ triangle with .w at last [].e
+',
+`box "diamond.m4" "requires" "dpic"')
.PE
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/examplesDPV.htmx b/Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/examplesDPV.htmx
index 3406d8ec8a7..93de48b0ad7 100644
--- a/Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/examplesDPV.htmx
+++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/examplesDPV.htmx
@@ -184,7 +184,8 @@ There are other issues:
m4tt`'target="_blank"</g> unless
arg 3 = B)
<li>m4tt svgLinkString</g> as above but for strings attached to objects
- <li> Greek and other symbols:
+ <li> Greek and other symbols (typically of the form &#nnn; so care is
+ required when used in a macro argument):
<!--
Reference:
@@ -529,6 +530,9 @@ cfig(TubediagsDPV,
from F. Langford-Smith`,' <i>Radiotron Designers Handbook</i>`,' fourth
edition`,' Harrison`,' NJ: Radio Corporation of America`,' 1952)
+cfig(LT3757DPV,
+ LT3757 controller)
+
cfig(UNODPV,
An Arduino UNO circuit adapted and redrawn)
@@ -575,7 +579,7 @@ cfig(ABlogixDPV,
The m4tt`'Autologix</g> macro can draw inputs on the left but
the added drawing complexity may require hand tuning with
second-argument options: m4tt`'L</g> puts the inputs on the left`,'
- m4tt`'R reverses their order`,' m4tt`'V</g> scans the input arguments
+ m4tt`'R</g> reverses their order`,' m4tt`'V</g> scans the input arguments
in reverse order`,' and m4tt`'offset=</g>`'<i>value</i> displaces
the array of inputs)
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/examplesDPVs.htmx b/Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/examplesDPVs.htmx
index 96a572b4623..db28ee632f6 100644
--- a/Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/examplesDPVs.htmx
+++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/examplesDPVs.htmx
@@ -174,7 +174,8 @@ There are other issues:
m4tt`'target="_blank"</g> unless
arg 3 = B)
<li>m4tt svgLinkString</g> as above but for strings attached to objects
- <li> Greek and other symbols:
+ <li> Greek and other symbols (typically of the form &#nnn; so care is
+ required when used in a macro argument):
<!--
Reference:
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/icsDPV.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/icsDPV.m4
index e0acaa8661b..99a117a67e0 100644
--- a/Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/icsDPV.m4
+++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/icsDPV.m4
@@ -77,28 +77,28 @@ define(`ic74LS138',`[ Chip: box wid_ lg_chipwd ht_ 11*lg_pinsep
`$1']')
define(`ic4017',`[ Chip: DIP_chip_outline(16)
- Loopover_(`x',
+ foreach_(`x',
`lg_pin(Chip.nw-(0,lg_pinsep*m4Lx),x,Pin`'m4Lx,w,m4Lx)',
PL, Q3, I3, I0, CLE, Q0, TC, GND)
- Loopover_(`x',
+ foreach_(`x',
`lg_pin(Chip.se+(0,lg_pinsep*m4Lx),x,Pin`'eval(m4Lx+8),e,eval(m4Lx+8))',
MR, U/D, Q1, I1, I2, Q2, CLK, Vcc)
`$1']')
define(`ic4510',`[ Chip: DIP_chip_outline(16)
- Loopover_(`x',
+ foreach_(`x',
`lg_pin(Chip.nw-(0,lg_pinsep*m4Lx),x,Pin`'m4Lx,w,m4Lx)',
PL, Q3, I3, I0, CLE, Q0, TC, GND)
- Loopover_(`x',
+ foreach_(`x',
`lg_pin(Chip.se+(0,lg_pinsep*m4Lx),x,Pin`'eval(m4Lx+8),e,eval(m4Lx+8))',
MR, U/D, Q1, I1, I2, Q2, CLK, Vcc)
`$1']')
define(`icVS1053',`[ Chip: DIP_chip_outline(32)
- Loopover_(`x',
+ foreach_(`x',
`lg_pin(Chip.nw-(0,lg_pinsep*m4Lx),x,Pin`'m4Lx,w,m4Lx)',
LOUT,ROUT,GBUF,AGND,AGND,DREG,Vcc,3V3,GND,MISO,MOSI,sclk,RST,CS,DCS,DCS)
- Loopover_(`x',
+ foreach_(`x',
`lg_pin(Chip.se+(0,lg_pinsep*m4Lx),x,Pin`'eval(m4Lx+16),e,eval(m4Lx+16))',
SDCD,RX,TX,7,6,5,4,3,2,1,0,GND,3V3,AGND,MIC`'svg_it(-),MIC`'svg_it(+))
`$1']')
@@ -111,16 +111,16 @@ define(`ArduinoUno',`[
Connector: box wid m4bwid ht m4bht
#
- plen = ifelse(`$4',,`2*L_unit',`$4')
+ m4pl = ifelse(`$3',,`2*L_unit',`$3')
#
-Loopover_(`x',`ifelse(x,nul,,
- `Pin`'eval(5+m4Lx): line left_ plen from Connector.nw-(0,(5+m4Lx)*lg_pinsep)
+foreach_(`x',`ifelse(x,nul,,
+ `Pin`'eval(5+m4Lx): line left_ m4pl from Connector.nw-(0,(5+m4Lx)*lg_pinsep)
{ "x" ljust at last line.start }')',
IOREF, RESET,svg_it(+)3V3,svg_it(+)5V, GND, GND, VIN,
nul, A0, A1, A2, A3, A4, A5)
#
-Loopover_(`x',`ifelse(x,nul,,
- `Pin`'eval(22-m4Lx): line right_ plen from Connector.ne-(0,m4Lx*lg_pinsep)
+foreach_(`x',`ifelse(x,nul,,
+ `Pin`'eval(22-m4Lx): line right_ m4pl from Connector.ne-(0,m4Lx*lg_pinsep)
{ "x" rjust at last line.start }')',
SCL, SDA, AREF, GND, D13, D12, ~D11, ~D10, ~D9, D8,
nul, D7, ~D6, ~D5, D4, ~D3, D2, TX D1, RX D0)
@@ -134,16 +134,16 @@ define(`ArduinoLeonardo',`[
#
Connector: box wid m4bwid ht m4bht
#
- plen = ifelse(`$4',,`2*L_unit',`$4')
+ m4pl = ifelse(`$3',,`2*L_unit',`$3')
#
-Loopover_(`x',`ifelse(x,nul,,
- `Pin`'eval(5+m4Lx): line left_ plen from Connector.nw-(0,(5+m4Lx)*lg_pinsep)
+foreach_(`x',`ifelse(x,nul,,
+ `Pin`'eval(5+m4Lx): line left_ m4pl from Connector.nw-(0,(5+m4Lx)*lg_pinsep)
{ "x" ljust at last line.start }')',
IOREF, RESET,svg_it(+)3V3,svg_it(+)5V, GND, GND, VIN,
nul, A0, A1, A2, A3, A4, A5)
#
-Loopover_(`x',`ifelse(x,nul,,
- `Pin`'eval(22-m4Lx): line right_ plen from Connector.ne-(0,m4Lx*lg_pinsep)
+foreach_(`x',`ifelse(x,nul,,
+ `Pin`'eval(22-m4Lx): line right_ m4pl from Connector.ne-(0,m4Lx*lg_pinsep)
{ "x" rjust at last line.start }')',
SCL, SDA, AREF, GND,
~D13, D12, ~D11, ~D10, ~D9, D8,
@@ -157,15 +157,15 @@ define(`RPi',`[
define(`m4bht',`ifelse(`$2',,`21*lg_pinsep',`$2')')dnl
#
GPIO: box wid m4bwid ht m4bht
- plen = ifelse(`$4',,`6*L_unit',`$4')
+ m4pl = ifelse(`$3',,`6*L_unit',`$3')
#
define A_LeftGPIO {
- exec sprintf("Pin%g: line left_ plen from GPIO.nw-(0,%g)",\
+ exec sprintf("Pin%g: line left_ m4pl from GPIO.nw-(0,%g)",\
2*(`$'1)-1,(`$'1)*lg_pinsep)
{ "`$'3" ljust at last line.start }
"`$'2" at last line.c above }
#
-Loopover_(`x',`ifelse(x,nul,,`A_LeftGPIO(m4Lx,patsubst(x,;,`,'))')',
+foreach_(`x',`ifelse(x,nul,,`A_LeftGPIO(m4Lx,patsubst(x,;,`,'))')',
;3V3,
2;SDA1, 3;SCL1, 4;GPIO_GCLK,
;GND,
@@ -180,12 +180,12 @@ Loopover_(`x',`ifelse(x,nul,,`A_LeftGPIO(m4Lx,patsubst(x,;,`,'))')',
;GND )
#
define A_RightGPIO {
- exec sprintf("Pin%g: line right_ plen from GPIO.ne-(0,%g)",\
+ exec sprintf("Pin%g: line right_ m4pl from GPIO.ne-(0,%g)",\
2*(`$'1),(`$'1)*lg_pinsep)
{ "`$'3" rjust at last line.start }
"`$'2" at last line.c above }
#
-Loopover_(`x',`ifelse(x,nul,,`A_RightGPIO(m4Lx,patsubst(x,;,`,'))')',
+foreach_(`x',`ifelse(x,nul,,`A_RightGPIO(m4Lx,patsubst(x,;,`,'))')',
;5V,
;5V,
;GND,
@@ -209,17 +209,17 @@ define(`USB_C_Socket',`[
define(`m4bht',`ifelse(`$2',,`14*lg_pinsep',`$2')')dnl
#
Base: box wid m4bwid ht m4bht rad 5/3*lg_pinsep
- plen = ifelse(`$4',,`6*L_unit',`$4')
+ m4pl = ifelse(`$3',,`6*L_unit',`$3')
#
- Loopover_(`x',
+ foreach_(`x',
`B`'eval(13-m4Lx): dnl
- line left_ plen from Base.n-(m4bwid/2,(m4Lx+0.5)*lg_pinsep)
+ line left_ m4pl from Base.n-(m4bwid/2,(m4Lx+0.5)*lg_pinsep)
{"x" ljust at last line.start}',
GND, RX1`'svg_it(+), RX1`'svg_it(-), VBUS, SBU2, D`'svg_it(-),
D`'svg_it(+), CC2, VBUS, TX2`'svg_it(-), TX2`'svg_it(+), GND)
#
- Loopover_(`x',
- `A`'m4Lx: line right_ plen from Base.n+(m4bwid/2,-(m4Lx+0.5)*lg_pinsep)
+ foreach_(`x',
+ `A`'m4Lx: line right_ m4pl from Base.n+(m4bwid/2,-(m4Lx+0.5)*lg_pinsep)
{"x" rjust at last line.start}',
GND, TX1`'svg_it(+), TX1`'svg_it(-), VBUS, CC1, D`'svg_it(+),
D`'svg_it(-), SBU1, VBUS, RX2`'svg_it(-), RX2`'svg_it(+), GND)
@@ -235,26 +235,26 @@ define(`HDMI_micro',`[
then right m4bwid/3 down m4bwid/3 \
then down m4bht-2*m4bwid/3 then down m4bwid/3 left m4bwid/3 \
then left m4bwid*2/3 then to Here]
- plen = ifelse(`$4',,`6*L_unit',`$4')
+ m4pl = ifelse(`$3',,`6*L_unit',`$3')
#
- Loopover_(`x',
- `Pin`'m4Lx: line left_ plen from Base.nw-(0,m4bwid/3+(m4Lx-1/2)*lg_pinsep)
+ foreach_(`x',
+ `Pin`'m4Lx: line left_ m4pl from Base.nw-(0,m4bwid/3+(m4Lx-1/2)*lg_pinsep)
{"x" ljust at last line.start}
"m4Lx" at last line.c above',
HPD, UTILITY, D2`'svg_it(+), D2_SH, D2`'svg_it(-),
D1`'svg_it(+), D1_SH, D1`'svg_it(-),D0`'svg_it(+), D0_SH,
D0`'svg_it(-), CLK`'svg_it(+), CLK_SH, CLK`'svg_it(-),
CEC, GND, SCL, SDA,svg_it(+)5V)
-L1: line from Base.nw+(m4bwid*2/3-lg_pinsep,0) up plen
+L1: line from Base.nw+(m4bwid*2/3-lg_pinsep,0) up m4pl
svg_rot(90,"21",at last line.c +(-4bp__,0))
svg_rot(90,"SH2",at last line.start + (4bp__,-8bp__))
- line from Base.nw+(m4bwid*2/3-2*lg_pinsep,0) up plen
+ line from Base.nw+(m4bwid*2/3-2*lg_pinsep,0) up m4pl
svg_rot(90,"20",at last line.c+(-4bp__,0))
svg_rot(90,"SH1",at last line.start + (4bp__,-8bp__))
- line from Base.sw+(m4bwid*2/3-lg_pinsep,0) down plen
+ line from Base.sw+(m4bwid*2/3-lg_pinsep,0) down m4pl
svg_rot(90,"23",at last line.c+(-4bp__,0))
svg_rot(90,"SH4",at last line.start + (4bp__,14bp__))
- line from Base.sw+(m4bwid*2/3-2*lg_pinsep,0) down plen
+ line from Base.sw+(m4bwid*2/3-2*lg_pinsep,0) down m4pl
svg_rot(90,"22",at last line.c+(-4bp__,0))
svg_rot(90,"SH3",at last line.start + (4bp__,14bp__))
#
@@ -283,13 +283,13 @@ define(`DIP_chip_outline',
type=I|Q; (default I for uniform-length pins;
Q: staggered) '
define(`DIP',`[ pinct= ifelse(`$1',,8,`$1')
- Loopover_(`Z',`pushkey_(`$2',patsubst(Z,:.*),patsubst(Z,.*:))',
+ foreach_(`Z',`pushkey_(`$2',patsubst(Z,:.*),patsubst(Z,.*:))',
bodywid: 5*L_unit,
bodylen: m4pinpitch*int(pinct/2+0.5),
pinpitch:2*L_unit,
pinwid: 1.2*L_unit,
pinlen: L_unit)
- Loopover_(`Z',`pushkey_(`$2',patsubst(Z,:.*),patsubst(Z,.*:),N)',
+ foreach_(`Z',`pushkey_(`$2',patsubst(Z,:.*),patsubst(Z,.*:),N)',
direct:U,
type:I)
setdir_(m4direct,U)
@@ -308,4 +308,59 @@ define(`DIP',`[ pinct= ifelse(`$1',,8,`$1')
popdef(`m4bodywid',`m4bodylen',`m4pinpitch',`m4pinwid',`m4pinlen',`m4direct',
`m4type') ]'))
+ `There is more than one way to draw an IC and
+ label its pins; here is one:'
+
+ `LT3724( keys ) IC in a [] block
+ keys: pinsep=expr; (svg_baselineskip*2.5)
+ pincount=expr; (8 per side)
+ hght=expr; ((pincount+1)*pinsep)
+ wdth=expr; (0.6*hght)'
+ `8 pins per side; pin labels
+ VIN, SHDN, CSS, BURST_EN, VFB, VC, SYNC, FSET,
+ SGND, SENSEM, SENSEP, PGND, VCC, SW, TG, BOOST'
+define(`LT3724',`[ pushkeys_(`$1',`pinsep:svg_baselineskip*2.5; pincount:8;
+ hght:(m4`'m4pincount+1)*m4`'pinsep; wdth:0.6*m4`'hght')dnl
+ Chip: box wid wdth ht hght shaded rgbstring(.94,.68,.76) "`LT3724'"
+ foreach_(`m4hx',`ifelse(m4hx,nil,,
+ `patsubst(m4hx,^[^:]*:): Chip.nw-(0,m4Lx*hght/(m4pincount+1))
+ "patsubst(m4hx,:.*)" ljust at Chip.nw-(0,m4Lx*hght/(m4pincount+1))')',
+ V`'svg_sub(IN):VIN, SHDN, C`'svg_sub(SS):CSS, BURST_EN,
+ V`'svg_sub(FB):VFB, V`'svg_sub(C):VC, SYNC, f`'svg_sub(SET):FSET)
+ line right_ textht*4 from SHDN+(textoffset,textht/2+2bp__)
+ foreach_(`m4hx',`ifelse(m4hx,nil,,
+ `patsubst(m4hx,^[^:]*:): Chip.se+(0,m4Lx*hght/(m4pincount+1))
+ "patsubst(m4hx,:.*)" rjust at Chip.se+(0,m4Lx*hght/(m4pincount+1))')',
+ SGND, SENSE`'svg_sup(-):SENSEM, SENSE`'svg_sup(+):SENSEP, PGND,
+ V`'svg_sub(CC):VCC, SW, TG, BOOST)
+ `$2' popdef(`m4pinsep',`m4pincount',`m4hght',`m4wdth') ]')
+
+
+ `Here is another way to draw an IC and
+ label its pins:'
+
+ `LT3757( keys ) IC in a [] block
+ keys: pinsep=expr; (svg_baselineskip*2.5)
+ pincount=expr; (8 per side)
+ hght=expr; ((pincount+1)*pinsep)
+ wdth=expr; (0.6*hght)'
+ `8 pins per side; pin labels
+ top: VIN; left: SHU, SYNC, RT, SS;
+ right: GATE, SENSE, FBX;
+ bottom: VC, GND, INTVCC'
+define(`LT3757',`[ pushkeys_(`$1',`pinsep:svg_baselineskip*2.5; pincount:8;
+ hght:(m4`'pincount+1)*m4`'pinsep; wdth:0.6*m4`'hght')dnl
+ Chip: box wid wdth ht hght shaded rgbstring(0.65,0.52,0.325) "`LT3757'" above
+ VIN: Chip.n; "V`'svg_sub(IN)" at VIN below
+ foreach_(`LL',`m43757label(nw,sw,ljust,patsubst(LL,:,`,'))',
+ SHU:2:"SHDN/UVLO", SYNC:5, RT:7, SS:8)
+ line from SHU+(2bp__,5bp__) right_ 24bp__
+ foreach_(`LL',`m43757label(se,ne,rjust,patsubst(LL,:,`,'))',
+ FBX:1, SENSE:3, GATE:5)
+ foreach_(`LL',`m43757label(sw,se,+(0,textht/3) above,patsubst(LL,:,`,'))',
+ VC:2:"V`'svg_sub(C)", GND:5, INTVCC:8:"INTV`'svg_sub(CC)")
+ `$2' popdef(`m4pinsep',`m4pincount',`m4hght',`m4wdth') ]')
+define(`m43757label',``$4': `$5'/(m4pincount+1) between Chip.`$1' and Chip.`$2'
+ ifelse(`$6',,"`$4'",`$6') at `$4' `$3'')
+
divert(0)dnl
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/shapesDPV.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/shapesDPV.m4
index d7c5df27ef3..0886c9f5fe3 100644
--- a/Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/shapesDPV.m4
+++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/shapesDPV.m4
@@ -1,159 +1,7 @@
.PS
# shapesDPV.m4
threeD_init
-
-divert(-1)
-# shapes.m4
-# 3D structures with complex surfaces and hidden lines are the domain of more
-# sophisticated software packages, but basic shapes can be drawn with pic.
-
-#####################################################
-
- `cylinder3D(xdispl,ydispl,zdispl,diameter,
- [colored "color"])'
-define(`cylinder3D',`[ Start: (0,0)
- xdispl = `$1'; ydispl = `$2'; zdispl = `$3'
- define(`M4CL',`xdispl,ydispl,zdispl')dnl
- lenc = length3D(M4CL)
- diamc = ifelse(`$4',,(lenc/2),`$4') ; radc = diamc/2
- cs = dot3D(View3D,M4CL)/lenc
- End: Project(M4CL)
- az = atan2(ydispl,xdispl)
- ae = atan2(zdispl,sqrt(xdispl^2+ydispl^2))
- CL: line invis from Start to End; C: CL.c
- nls = int(twopi_*radc/lthick)
- define(`M4PP',`rot3Dz(az,rot3Dy(-ae,rot3Dx(-i/nls*twopi_,0,0,radc)))')dnl
- for i=0 to nls-1 do { if dot3D(View3D,M4PP) > 0 then {
- P: Project(M4PP)
- ql = sqrta(dot3D(Light3D,M4PP)/radc)
- line from P to End+P outlined rgbstring(ql,ql,ql) `$5' } }
- Perp: (vperp(CL,radc))
- if cs > 0 then { T: End; B: Start } else { T: Start; B: End }
- rpoint_(from Start to Perp)
- css = sqrta(cs)
- Top: rotellipse(diamc,diamc*cs,
- thick linethick/3 shaded rgbstring(css,css,css)) with .c at T
- W: line thick linethick/3 from T+Perp to B+Perp
- Bot: ellipsearc(diamc,diamc*cs,pi_,twopi_,rp_ang,cw,
- thick linethick/3) with .C at B
- E: line thick linethick/3 from B-Perp to T-Perp
- rpoint_(from Start to End)
-`$6']')
-
- `cone3D(xdispl,ydispl,zdispl,diameter,
- [colored "color"])'
-define(`cone3D',`[ Start: (0,0)
- xdispl = `$1'; ydispl = `$2'; zdispl = `$3'
- define(`M4CL',`xdispl,ydispl,zdispl')dnl
- lenc = length3D(M4CL)
- diamc = ifelse(`$4',,(lenc/2),`$4') ; radc = diamc/2
- End: Project(M4CL)
- cs = dot3D(View3D,M4CL)/lenc
- az = atan2(ydispl,xdispl)
- ae = atan2(zdispl,sqrt(xdispl^2+ydispl^2))
- CL: line invis from Start to End; C: CL.c
- nls = int(twopi_*radc/lthick)
- lt = sqrt(radc^2+lenc^2)
- b = 0
- for i=0 to nls-1 do { if dot3D(View3D,
- rot3Dz(az,rot3Dy(-ae,rot3Dx(-i/nls*twopi_,radc,0,lenc)))) > 0 then {
- ql = sqrta(dot3D(Light3D,
- rot3Dz(az,rot3Dy(-ae,rot3Dx(-i/nls*twopi_,radc,0,lenc))))/lt)
- P: Project(rot3Dz(az,rot3Dy(-ae,rot3Dx(-i/nls*twopi_,0,0,radc))))
- line from P to End outlined rgbstring(ql,ql,ql) `$5'
- if !b then { WB: P; b = 1 }
- } else { if b then { BW: P; b = 0 } } }
- if vlength(CL.x,CL.y) != 0 then { Perp: (vperp(CL,radc,R)) } else { Perp: (radc,0) }
- if cs >= 0 then { T: End; B: Start } else {T: Start; B: End }
- rpoint_(from Start to Perp)
- pout = (vlength(End.x,End.y) > abs(radc*cs))
- if cs < 0 then { css = sqrta(cs)
- if pout then { line thick linethick/3 from BW to End then to WB }
- Bot: rotellipse(diamc,diamc*cs,thick linethick/3 \
- ifelse(`$5',,`shaded rgbstring(css,css,css)',`$5')) with .c at T } \
- else { if pout then {
- line thick linethick/3 from BW to End then to WB
- a = acos((WB.x*Perp.x+WB.y*Perp.y)/radc^2)
- Bot: ellipsearc(diamc,diamc*cs,a,pi_-a,rp_ang,cw, thick linethick/3) \
- with .C at B } \
- else {
- Bot: rotellipse(diamc,diamc*cs,thick linethick/3) with .c at B } }
- rpoint_(from Start to End)
-`$6']')
- `Arrow3D(xdispl,ydispl,zdispl,
- diam,arrowwid,arrowht)'
-define(`Arrow3D',`[ diam_Ar = ifelse(`$4',,linewid/10,`$4')
- wid_Ar = ifelse(`$5',,diam_Ar*2,`$5')
- ht_Ar = ifelse(`$6',,wid_Ar*2,`$6')
- x_Ar = ifelse(`$1',,1,`$1')
- y_Ar = ifelse(`$2',,1,`$2')
- z_Ar = ifelse(`$3',,1,`$3')
- define(`M4Arrow3D',`x_Ar,y_Ar,z_Ar')dnl
- len_Ar = length3D(M4Arrow3D)
- len_Shaft = len_Ar - ht_Ar
- cs_Ar = dot3D(View3D,M4Arrow3D)
- if cs_Ar >= 0 then {
- Shaft: cylinder3D(sprod3D(len_Shaft/len_Ar,M4Arrow3D),diam_Ar)
- Head: cone3D(sprod3D(ht_Ar/len_Ar,M4Arrow3D),wid_Ar) \
- with .Start at Shaft.End } \
- else {
- Head: cone3D(sprod3D(ht_Ar/len_Ar,M4Arrow3D),wid_Ar)
- Shaft: cylinder3D(sprod3D(len_Shaft/len_Ar,M4Arrow3D),diam_Ar) \
- with .End at Head.Start }
- Start: Shaft.Start; End: Head.End
- `$7']')
-
-define(`f2xyz3D',``$1'x = `$2'
-`$1'y = `$3'
-`$1'z = `$4' ')
-
- `prism3D(xdispl,ydispl,zdispl,wid,ht,rotation (rad))'
-define(`prism3D',`[ Start: (0,0)
- xdispl = ifelse(`$1',,linewid,`$1')
- ydispl = ifelse(`$2',,linewid,`$2')
- zdispl = ifelse(`$3',,linewid,`$3')
- widp = ifelse(`$4',,(linewid/5),`$4')
- htp = ifelse(`$5',,(linewid/10),`$5')
- rotp = ifelse(`$6',,0,`$6')
- End: Project(xdispl,ydispl,zdispl); C: 0.5 between Start and End
- lenp = length3D(xdispl,ydispl,zdispl)
- az = atan2(ydispl,xdispl); ae = atan2(zdispl,sqrt(xdispl^2+ydispl^2))
- wp2 = widp/2; hp2 = htp/2
-# corners
- f2xyz3D(nwB,rot3Dz(az,rot3Dy(-ae,rot3Dx(rotp, 0,-wp2, hp2))))
- f2xyz3D(swB,rot3Dz(az,rot3Dy(-ae,rot3Dx(rotp, 0,-wp2,-hp2))))
- f2xyz3D(seB,rot3Dz(az,rot3Dy(-ae,rot3Dx(rotp, 0, wp2,-hp2))))
- f2xyz3D(neB,rot3Dz(az,rot3Dy(-ae,rot3Dx(rotp, 0, wp2, hp2))))
- f2xyz3D(nwF,rot3Dz(az,rot3Dy(-ae,rot3Dx(rotp,lenp,-wp2, hp2))))
- f2xyz3D(swF,rot3Dz(az,rot3Dy(-ae,rot3Dx(rotp,lenp,-wp2,-hp2))))
- f2xyz3D(seF,rot3Dz(az,rot3Dy(-ae,rot3Dx(rotp,lenp, wp2,-hp2))))
- f2xyz3D(neF,rot3Dz(az,rot3Dy(-ae,rot3Dx(rotp,lenp, wp2, hp2))))
-# facets
- M4Facet3D(neF,nwF,swF,seF)
- M4Facet3D(neB,seB,swB,nwB)
- M4Facet3D(neF,seF,seB,neB)
- M4Facet3D(neF,neB,nwB,nwF)
- M4Facet3D(seF,swF,swB,seB)
- M4Facet3D(nwF,nwB,swB,swF)
-`$7']')
-
-define(`M4Facet3D',`
-define(`PFacet',`cross3D(diff3D(`$2'x,`$2'y,`$2'z,`$1'x,`$1'y,`$1'z),
- diff3D(`$3'x,`$3'y,`$3'z,`$2'x,`$2'y,`$2'z))')
- if dot3D(View3D,PFacet) > 0 then {
- fFacet = sqrta(dot3D(Light3D,PFacet)/length3D(PFacet))
- P1: Project(`$1'x,`$1'y,`$1'z)
- P2: Project(`$2'x,`$2'y,`$2'z)
- P3: Project(`$3'x,`$3'y,`$3'z)
- P4: Project(`$4'x,`$4'y,`$4'z)
- line fill_(fFacet) invis from P1 to P2 then to P3 then to P4 then to P1
- line from P1 to P2; round
- line to P3; round
- line to P4; round
- line to P1; round } ')
-
-#####################################################
-divert(0)dnl
+include(../Shapedefs.m4)
azimuth = 60
elev = 10
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/ex02.tex b/Master/texmf-dist/doc/latex/circuit-macros/examples/ex02.tex
new file mode 100644
index 00000000000..ef1057ee931
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/ex02.tex
@@ -0,0 +1,1573 @@
+\begin{tikzpicture}[scale=2.54]%
+% dpic version 2024.01.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.491667)
+ --(0,0.691667)
+ --(0.4,0.491667)
+ --(0,0.291667)
+ --(0,0.491667)\dpicstop
+\dpicdraw (0.4,0.491667)
+ --(0.6,0.491667)\dpicstop
+\draw (0.055348,0.591667) node{{\scriptsize$-$}};
+\draw (0.055348,0.391667) node{{\scriptsize$+$}};
+\dpicdraw (0.175736,0.067403)
+ --(0.034315,0.208824)
+ --(0.458579,0.350245)
+ --(0.317157,-0.074019)
+ --(0.175736,0.067403)\dpicstop
+\dpicdraw (0.458579,0.350245)
+ --(0.6,0.491667)\dpicstop
+\draw (0.144162,0.17725) node{{\scriptsize$-$}};
+\draw (0.285584,0.035829) node{{\scriptsize$+$}};
+\dpicdraw (0.6,-0.108333)
+ --(0.4,-0.108333)
+ --(0.6,0.291667)
+ --(0.8,-0.108333)
+ --(0.6,-0.108333)\dpicstop
+\dpicdraw (0.6,0.291667)
+ --(0.6,0.491667)\dpicstop
+\draw (0.5,-0.052985) node{{\scriptsize$-$}};
+\draw (0.7,-0.052985) node{{\scriptsize$+$}};
+\dpicdraw (1.024264,0.067403)
+ --(0.882843,-0.074019)
+ --(0.741421,0.350245)
+ --(1.165685,0.208824)
+ --(1.024264,0.067403)\dpicstop
+\dpicdraw (0.741421,0.350245)
+ --(0.6,0.491667)\dpicstop
+\draw (0.914416,0.035829) node{{\scriptsize$-$}};
+\draw (1.055838,0.17725) node{{\scriptsize$+$}};
+\dpicdraw (1.2,0.491667)
+ --(1.2,0.291667)
+ --(0.8,0.491667)
+ --(1.2,0.691667)
+ --(1.2,0.491667)\dpicstop
+\dpicdraw (0.8,0.491667)
+ --(0.6,0.491667)\dpicstop
+\draw (1.144652,0.391667) node{{\scriptsize$-$}};
+\draw (1.144652,0.591667) node{{\scriptsize$+$}};
+\dpicdraw (1.024264,0.915931)
+ --(1.165685,0.774509)
+ --(0.741421,0.633088)
+ --(0.882843,1.057352)
+ --(1.024264,0.915931)\dpicstop
+\dpicdraw (0.741421,0.633088)
+ --(0.6,0.491667)\dpicstop
+\draw (1.055838,0.806083) node{{\scriptsize$-$}};
+\draw (0.914416,0.947504) node{{\scriptsize$+$}};
+\dpicdraw (0.6,1.091667)
+ --(0.8,1.091667)
+ --(0.6,0.691667)
+ --(0.4,1.091667)
+ --(0.6,1.091667)\dpicstop
+\dpicdraw (0.6,0.691667)
+ --(0.6,0.491667)\dpicstop
+\draw (0.7,1.036319) node{{\scriptsize$-$}};
+\draw (0.5,1.036319) node{{\scriptsize$+$}};
+\dpicdraw (0.175736,0.915931)
+ --(0.317157,1.057352)
+ --(0.458579,0.633088)
+ --(0.034315,0.774509)
+ --(0.175736,0.915931)\dpicstop
+\dpicdraw (0.458579,0.633088)
+ --(0.6,0.491667)\dpicstop
+\draw (0.285584,0.947504) node{{\scriptsize$-$}};
+\draw (0.144162,0.806083) node{{\scriptsize$+$}};
+\dpicdraw (0.6,-0.108333)
+ --(0.6,-0.208333)
+ --(0.633333,-0.225)
+ --(0.566667,-0.258333)
+ --(0.633333,-0.291667)
+ --(0.566667,-0.325)
+ --(0.633333,-0.358333)
+ --(0.566667,-0.391667)
+ --(0.6,-0.408333)
+ --(0.6,-0.508333)\dpicstop
+\dpicdraw (0.6,-0.508333)
+ --(0.6,-0.612799)\dpicstop
+\filldraw[line width=0bp](0.741071,-0.503813)
+ --(0.765763,-0.447693)
+ --(0.709644,-0.472386) --cycle\dpicstop
+\dpicdraw (0.635656,-0.577801)
+ --(0.754925,-0.458532)\dpicstop
+\filldraw[line width=0bp](0.776426,-0.539168)
+ --(0.801119,-0.483049)
+ --(0.744999,-0.507741) --cycle\dpicstop
+\dpicdraw (0.671011,-0.613156)
+ --(0.79028,-0.493887)\dpicstop
+\fill[fill=black,line width=0bp](0.6,-0.612799)
+ --(0.633333,-0.612799)
+ --(0.6,-0.664999)
+ --(0.566667,-0.612799)
+ --(0.6,-0.612799)--cycle
+\dpicstop
+\dpicdraw (0.6,-0.612799)
+ --(0.633333,-0.612799)
+ --(0.6,-0.664999)
+ --(0.566667,-0.612799)
+ --(0.6,-0.612799)\dpicstop
+\dpicdraw (0.562615,-0.670534)
+ --(0.637385,-0.670534)\dpicstop
+\dpicdraw (0.6,-0.670534)
+ --(0.6,-0.775)\dpicstop
+\dpicdraw (0.6,-0.775)
+ --(0.6,-0.879466)\dpicstop
+\filldraw[line width=0bp](0.455001,-0.774408)
+ --(0.398881,-0.749715)
+ --(0.423574,-0.805835) --cycle\dpicstop
+\dpicdraw (0.528989,-0.879823)
+ --(0.40972,-0.760554)\dpicstop
+\filldraw[line width=0bp](0.490356,-0.739053)
+ --(0.434237,-0.71436)
+ --(0.458929,-0.77048) --cycle\dpicstop
+\dpicdraw (0.564344,-0.844468)
+ --(0.445075,-0.725198)\dpicstop
+\fill[fill=black,line width=0bp](0.6,-0.879466)
+ --(0.633333,-0.879466)
+ --(0.6,-0.931666)
+ --(0.566667,-0.879466)
+ --(0.6,-0.879466)--cycle
+\dpicstop
+\dpicdraw (0.6,-0.879466)
+ --(0.633333,-0.879466)
+ --(0.6,-0.931666)
+ --(0.566667,-0.879466)
+ --(0.6,-0.879466)\dpicstop
+\dpicdraw (0.562615,-0.937201)
+ --(0.637385,-0.937201)\dpicstop
+\dpicdraw (0.6,-0.937201)
+ --(0.6,-1.041667)\dpicstop
+\dpicdraw (0.666667,-1.041667)
+ --(0.533333,-1.041667)\dpicstop
+\dpicdraw (0.644444,-1.066667)
+ --(0.555556,-1.066667)\dpicstop
+\dpicdraw (0.628571,-1.091667)
+ --(0.571429,-1.091667)\dpicstop
+\dpicdraw[fill=black](2.725171,0.033504) circle (0.006299in)\dpicstop
+\dpicdraw (2.425171,-1.086111)
+ --(2.625171,-1.086111)\dpicstop
+\dpicdraw (2.625171,-1.086111)
+ --(2.625171,-1.091667)\dpicstop
+\dpicdraw (2.625171,-1.086111)
+ ..controls (2.625171,-1.077179) and (2.629936,-1.068926)
+ ..(2.637671,-1.06446)
+ ..controls (2.645406,-1.059995) and (2.654936,-1.059995)
+ ..(2.662671,-1.06446)
+ ..controls (2.670406,-1.068926) and (2.675171,-1.077179)
+ ..(2.675171,-1.086111)\dpicstop
+\dpicdraw (2.675171,-1.086111)
+ --(2.675171,-1.091667)\dpicstop
+\dpicdraw (2.675171,-1.086111)
+ ..controls (2.675171,-1.077179) and (2.679936,-1.068926)
+ ..(2.687671,-1.06446)
+ ..controls (2.695406,-1.059995) and (2.704936,-1.059995)
+ ..(2.712671,-1.06446)
+ ..controls (2.720406,-1.068926) and (2.725171,-1.077179)
+ ..(2.725171,-1.086111)\dpicstop
+\dpicdraw (2.725171,-1.086111)
+ --(2.725171,-1.091667)\dpicstop
+\dpicdraw (2.725171,-1.086111)
+ ..controls (2.725171,-1.077179) and (2.729936,-1.068926)
+ ..(2.737671,-1.06446)
+ ..controls (2.745406,-1.059995) and (2.754936,-1.059995)
+ ..(2.762671,-1.06446)
+ ..controls (2.770406,-1.068926) and (2.775171,-1.077179)
+ ..(2.775171,-1.086111)\dpicstop
+\dpicdraw (2.775171,-1.086111)
+ --(2.775171,-1.091667)\dpicstop
+\dpicdraw (2.775171,-1.086111)
+ ..controls (2.775171,-1.077179) and (2.779936,-1.068926)
+ ..(2.787671,-1.06446)
+ ..controls (2.795406,-1.059995) and (2.804936,-1.059995)
+ ..(2.812671,-1.06446)
+ ..controls (2.820406,-1.068926) and (2.825171,-1.077179)
+ ..(2.825171,-1.086111)\dpicstop
+\dpicdraw (2.825171,-1.086111)
+ --(2.825171,-1.091667)\dpicstop
+\dpicdraw (2.825171,-1.086111)
+ --(3.025171,-1.086111)\dpicstop
+\dpicdraw (3.025171,-1.086111)
+ --(3.198376,-0.986111)\dpicstop
+\dpicdraw (3.198376,-0.986111)
+ --(3.201154,-0.990922)\dpicstop
+\dpicdraw (3.198376,-0.986111)
+ ..controls (3.19391,-0.978376) and (3.19391,-0.968846)
+ ..(3.198376,-0.961111)
+ ..controls (3.202842,-0.953376) and (3.211095,-0.948611)
+ ..(3.220027,-0.948611)
+ ..controls (3.228958,-0.948611) and (3.237211,-0.953376)
+ ..(3.241677,-0.961111)\dpicstop
+\dpicdraw (3.241677,-0.961111)
+ --(3.244455,-0.965922)\dpicstop
+\dpicdraw (3.241677,-0.961111)
+ ..controls (3.237211,-0.953376) and (3.237211,-0.943846)
+ ..(3.241677,-0.936111)
+ ..controls (3.246143,-0.928376) and (3.254396,-0.923611)
+ ..(3.263328,-0.923611)
+ ..controls (3.272259,-0.923611) and (3.280513,-0.928376)
+ ..(3.284978,-0.936111)\dpicstop
+\dpicdraw (3.284978,-0.936111)
+ --(3.287756,-0.940922)\dpicstop
+\dpicdraw (3.284978,-0.936111)
+ ..controls (3.280513,-0.928376) and (3.280513,-0.918846)
+ ..(3.284978,-0.911111)
+ ..controls (3.289444,-0.903376) and (3.297697,-0.898611)
+ ..(3.306629,-0.898611)
+ ..controls (3.315561,-0.898611) and (3.323814,-0.903376)
+ ..(3.32828,-0.911111)\dpicstop
+\dpicdraw (3.32828,-0.911111)
+ --(3.331057,-0.915922)\dpicstop
+\dpicdraw (3.32828,-0.911111)
+ ..controls (3.323814,-0.903376) and (3.323814,-0.893846)
+ ..(3.32828,-0.886111)
+ ..controls (3.332746,-0.878376) and (3.340999,-0.873611)
+ ..(3.34993,-0.873611)
+ ..controls (3.358862,-0.873611) and (3.367115,-0.878376)
+ ..(3.371581,-0.886111)\dpicstop
+\dpicdraw (3.371581,-0.886111)
+ --(3.374359,-0.890922)\dpicstop
+\dpicdraw (3.371581,-0.886111)
+ --(3.544786,-0.786111)\dpicstop
+\dpicdraw (3.544786,-0.786111)
+ --(3.644786,-0.612906)\dpicstop
+\dpicdraw (3.644786,-0.612906)
+ --(3.649597,-0.615684)\dpicstop
+\dpicdraw (3.644786,-0.612906)
+ ..controls (3.637051,-0.60844) and (3.632286,-0.600187)
+ ..(3.632286,-0.591255)
+ ..controls (3.632286,-0.582324) and (3.637051,-0.574071)
+ ..(3.644786,-0.569605)
+ ..controls (3.652521,-0.565139) and (3.662051,-0.565139)
+ ..(3.669786,-0.569605)\dpicstop
+\dpicdraw (3.669786,-0.569605)
+ --(3.674597,-0.572383)\dpicstop
+\dpicdraw (3.669786,-0.569605)
+ ..controls (3.662051,-0.565139) and (3.657286,-0.556886)
+ ..(3.657286,-0.547954)
+ ..controls (3.657286,-0.539022) and (3.662051,-0.530769)
+ ..(3.669786,-0.526303)
+ ..controls (3.677521,-0.521838) and (3.687051,-0.521838)
+ ..(3.694786,-0.526303)\dpicstop
+\dpicdraw (3.694786,-0.526303)
+ --(3.699597,-0.529081)\dpicstop
+\dpicdraw (3.694786,-0.526303)
+ ..controls (3.687051,-0.521838) and (3.682286,-0.513584)
+ ..(3.682286,-0.504653)
+ ..controls (3.682286,-0.495721) and (3.687051,-0.487468)
+ ..(3.694786,-0.483002)
+ ..controls (3.702521,-0.478536) and (3.712051,-0.478536)
+ ..(3.719786,-0.483002)\dpicstop
+\dpicdraw (3.719786,-0.483002)
+ --(3.724597,-0.48578)\dpicstop
+\dpicdraw (3.719786,-0.483002)
+ ..controls (3.712051,-0.478536) and (3.707286,-0.470283)
+ ..(3.707286,-0.461352)
+ ..controls (3.707286,-0.45242) and (3.712051,-0.444167)
+ ..(3.719786,-0.439701)
+ ..controls (3.727521,-0.435235) and (3.737051,-0.435235)
+ ..(3.744786,-0.439701)\dpicstop
+\dpicdraw (3.744786,-0.439701)
+ --(3.749597,-0.442479)\dpicstop
+\dpicdraw (3.744786,-0.439701)
+ --(3.844786,-0.266496)\dpicstop
+\dpicdraw (3.844786,-0.266496)
+ --(3.844786,-0.066496)\dpicstop
+\dpicdraw (3.844786,-0.066496)
+ --(3.850342,-0.066496)\dpicstop
+\dpicdraw (3.844786,-0.066496)
+ ..controls (3.835854,-0.066496) and (3.827601,-0.061731)
+ ..(3.823135,-0.053996)
+ ..controls (3.81867,-0.046261) and (3.81867,-0.036731)
+ ..(3.823135,-0.028996)
+ ..controls (3.827601,-0.021261) and (3.835854,-0.016496)
+ ..(3.844786,-0.016496)\dpicstop
+\dpicdraw (3.844786,-0.016496)
+ --(3.850342,-0.016496)\dpicstop
+\dpicdraw (3.844786,-0.016496)
+ ..controls (3.835854,-0.016496) and (3.827601,-0.011731)
+ ..(3.823135,-0.003996)
+ ..controls (3.81867,0.003739) and (3.81867,0.013269)
+ ..(3.823135,0.021004)
+ ..controls (3.827601,0.028739) and (3.835854,0.033504)
+ ..(3.844786,0.033504)\dpicstop
+\dpicdraw (3.844786,0.033504)
+ --(3.850342,0.033504)\dpicstop
+\dpicdraw (3.844786,0.033504)
+ ..controls (3.835854,0.033504) and (3.827601,0.038269)
+ ..(3.823135,0.046004)
+ ..controls (3.81867,0.053739) and (3.81867,0.063269)
+ ..(3.823135,0.071004)
+ ..controls (3.827601,0.078739) and (3.835854,0.083504)
+ ..(3.844786,0.083504)\dpicstop
+\dpicdraw (3.844786,0.083504)
+ --(3.850342,0.083504)\dpicstop
+\dpicdraw (3.844786,0.083504)
+ ..controls (3.835854,0.083504) and (3.827601,0.088269)
+ ..(3.823135,0.096004)
+ ..controls (3.81867,0.103739) and (3.81867,0.113269)
+ ..(3.823135,0.121004)
+ ..controls (3.827601,0.128739) and (3.835854,0.133504)
+ ..(3.844786,0.133504)\dpicstop
+\dpicdraw (3.844786,0.133504)
+ --(3.850342,0.133504)\dpicstop
+\dpicdraw (3.844786,0.133504)
+ --(3.844786,0.333504)\dpicstop
+\dpicdraw (3.844786,0.333504)
+ --(3.744786,0.506709)\dpicstop
+\dpicdraw (3.744786,0.506709)
+ --(3.749597,0.509487)\dpicstop
+\dpicdraw (3.744786,0.506709)
+ ..controls (3.732829,0.499806) and (3.717539,0.503903)
+ ..(3.710635,0.51586)
+ ..controls (3.703732,0.527817) and (3.707829,0.543107)
+ ..(3.719786,0.55001)\dpicstop
+\dpicdraw (3.719786,0.55001)
+ --(3.724597,0.552788)\dpicstop
+\dpicdraw (3.719786,0.55001)
+ ..controls (3.712051,0.545545) and (3.702521,0.545545)
+ ..(3.694786,0.55001)
+ ..controls (3.687051,0.554476) and (3.682286,0.562729)
+ ..(3.682286,0.571661)
+ ..controls (3.682286,0.580593) and (3.687051,0.588846)
+ ..(3.694786,0.593312)\dpicstop
+\dpicdraw (3.694786,0.593312)
+ --(3.699597,0.59609)\dpicstop
+\dpicdraw (3.694786,0.593312)
+ ..controls (3.682829,0.586408) and (3.667539,0.590505)
+ ..(3.660635,0.602462)
+ ..controls (3.653732,0.61442) and (3.657829,0.629709)
+ ..(3.669786,0.636613)\dpicstop
+\dpicdraw (3.669786,0.636613)
+ --(3.674597,0.639391)\dpicstop
+\dpicdraw (3.669786,0.636613)
+ ..controls (3.657829,0.629709) and (3.642539,0.633806)
+ ..(3.635635,0.645764)
+ ..controls (3.628732,0.657721) and (3.632829,0.673011)
+ ..(3.644786,0.679914)\dpicstop
+\dpicdraw (3.644786,0.679914)
+ --(3.649597,0.682692)\dpicstop
+\dpicdraw (3.644786,0.679914)
+ --(3.544786,0.853119)\dpicstop
+\dpicdraw (3.544786,0.853119)
+ --(3.371581,0.953119)\dpicstop
+\dpicdraw (3.371581,0.953119)
+ --(3.374359,0.957931)\dpicstop
+\dpicdraw (3.371581,0.953119)
+ ..controls (3.367115,0.945384) and (3.358862,0.940619)
+ ..(3.34993,0.940619)
+ ..controls (3.340999,0.940619) and (3.332746,0.945384)
+ ..(3.32828,0.953119)
+ ..controls (3.323814,0.960854) and (3.323814,0.970384)
+ ..(3.32828,0.978119)\dpicstop
+\dpicdraw (3.32828,0.978119)
+ --(3.331057,0.982931)\dpicstop
+\dpicdraw (3.32828,0.978119)
+ ..controls (3.323814,0.970384) and (3.315561,0.965619)
+ ..(3.306629,0.965619)
+ ..controls (3.297697,0.965619) and (3.289444,0.970384)
+ ..(3.284978,0.978119)
+ ..controls (3.280513,0.985854) and (3.280513,0.995384)
+ ..(3.284978,1.003119)\dpicstop
+\dpicdraw (3.284978,1.003119)
+ --(3.287756,1.007931)\dpicstop
+\dpicdraw (3.284978,1.003119)
+ ..controls (3.280513,0.995384) and (3.272259,0.990619)
+ ..(3.263328,0.990619)
+ ..controls (3.254396,0.990619) and (3.246143,0.995384)
+ ..(3.241677,1.003119)
+ ..controls (3.237211,1.010854) and (3.237211,1.020384)
+ ..(3.241677,1.028119)\dpicstop
+\dpicdraw (3.241677,1.028119)
+ --(3.244455,1.032931)\dpicstop
+\dpicdraw (3.241677,1.028119)
+ ..controls (3.237211,1.020384) and (3.228958,1.015619)
+ ..(3.220027,1.015619)
+ ..controls (3.211095,1.015619) and (3.202842,1.020384)
+ ..(3.198376,1.028119)
+ ..controls (3.19391,1.035854) and (3.19391,1.045384)
+ ..(3.198376,1.053119)\dpicstop
+\dpicdraw (3.198376,1.053119)
+ --(3.201154,1.057931)\dpicstop
+\dpicdraw (3.198376,1.053119)
+ --(3.025171,1.153119)\dpicstop
+\dpicdraw (3.025171,1.153119)
+ --(2.825171,1.153119)\dpicstop
+\dpicdraw (2.825171,1.153119)
+ --(2.825171,1.158675)\dpicstop
+\dpicdraw (2.825171,1.153119)
+ ..controls (2.825171,1.144188) and (2.820406,1.135935)
+ ..(2.812671,1.131469)
+ ..controls (2.804936,1.127003) and (2.795406,1.127003)
+ ..(2.787671,1.131469)
+ ..controls (2.779936,1.135935) and (2.775171,1.144188)
+ ..(2.775171,1.153119)\dpicstop
+\dpicdraw (2.775171,1.153119)
+ --(2.775171,1.158675)\dpicstop
+\dpicdraw (2.775171,1.153119)
+ ..controls (2.775171,1.144188) and (2.770406,1.135935)
+ ..(2.762671,1.131469)
+ ..controls (2.754936,1.127003) and (2.745406,1.127003)
+ ..(2.737671,1.131469)
+ ..controls (2.729936,1.135935) and (2.725171,1.144188)
+ ..(2.725171,1.153119)\dpicstop
+\dpicdraw (2.725171,1.153119)
+ --(2.725171,1.158675)\dpicstop
+\dpicdraw (2.725171,1.153119)
+ ..controls (2.725171,1.144188) and (2.720406,1.135935)
+ ..(2.712671,1.131469)
+ ..controls (2.704936,1.127003) and (2.695406,1.127003)
+ ..(2.687671,1.131469)
+ ..controls (2.679936,1.135935) and (2.675171,1.144188)
+ ..(2.675171,1.153119)\dpicstop
+\dpicdraw (2.675171,1.153119)
+ --(2.675171,1.158675)\dpicstop
+\dpicdraw (2.675171,1.153119)
+ ..controls (2.675171,1.144188) and (2.670406,1.135935)
+ ..(2.662671,1.131469)
+ ..controls (2.654936,1.127003) and (2.645406,1.127003)
+ ..(2.637671,1.131469)
+ ..controls (2.629936,1.135935) and (2.625171,1.144188)
+ ..(2.625171,1.153119)\dpicstop
+\dpicdraw (2.625171,1.153119)
+ --(2.625171,1.158675)\dpicstop
+\dpicdraw (2.625171,1.153119)
+ --(2.425171,1.153119)\dpicstop
+\dpicdraw (2.425171,1.153119)
+ --(2.251966,1.053119)\dpicstop
+\dpicdraw (2.251966,1.053119)
+ --(2.249188,1.057931)\dpicstop
+\dpicdraw (2.251966,1.053119)
+ ..controls (2.256432,1.045384) and (2.256432,1.035854)
+ ..(2.251966,1.028119)
+ ..controls (2.2475,1.020384) and (2.239247,1.015619)
+ ..(2.230315,1.015619)
+ ..controls (2.221383,1.015619) and (2.21313,1.020384)
+ ..(2.208664,1.028119)\dpicstop
+\dpicdraw (2.208664,1.028119)
+ --(2.205887,1.032931)\dpicstop
+\dpicdraw (2.208664,1.028119)
+ ..controls (2.21313,1.020384) and (2.21313,1.010854)
+ ..(2.208664,1.003119)
+ ..controls (2.204199,0.995384) and (2.195945,0.990619)
+ ..(2.187014,0.990619)
+ ..controls (2.178082,0.990619) and (2.169829,0.995384)
+ ..(2.165363,1.003119)\dpicstop
+\dpicdraw (2.165363,1.003119)
+ --(2.162585,1.007931)\dpicstop
+\dpicdraw (2.165363,1.003119)
+ ..controls (2.169829,0.995384) and (2.169829,0.985854)
+ ..(2.165363,0.978119)
+ ..controls (2.160897,0.970384) and (2.152644,0.965619)
+ ..(2.143713,0.965619)
+ ..controls (2.134781,0.965619) and (2.126528,0.970384)
+ ..(2.122062,0.978119)\dpicstop
+\dpicdraw (2.122062,0.978119)
+ --(2.119284,0.982931)\dpicstop
+\dpicdraw (2.122062,0.978119)
+ ..controls (2.126528,0.970384) and (2.126528,0.960854)
+ ..(2.122062,0.953119)
+ ..controls (2.117596,0.945384) and (2.109343,0.940619)
+ ..(2.100411,0.940619)
+ ..controls (2.09148,0.940619) and (2.083226,0.945384)
+ ..(2.078761,0.953119)\dpicstop
+\dpicdraw (2.078761,0.953119)
+ --(2.075983,0.957931)\dpicstop
+\dpicdraw (2.078761,0.953119)
+ --(1.905556,0.853119)\dpicstop
+\dpicdraw (1.905556,0.853119)
+ --(1.805556,0.679914)\dpicstop
+\dpicdraw (1.805556,0.679914)
+ --(1.800744,0.682692)\dpicstop
+\dpicdraw (1.805556,0.679914)
+ ..controls (1.813291,0.675448) and (1.818056,0.667195)
+ ..(1.818056,0.658264)
+ ..controls (1.818056,0.649332) and (1.813291,0.641079)
+ ..(1.805556,0.636613)
+ ..controls (1.797821,0.632147) and (1.788291,0.632147)
+ ..(1.780556,0.636613)\dpicstop
+\dpicdraw (1.780556,0.636613)
+ --(1.775744,0.639391)\dpicstop
+\dpicdraw (1.780556,0.636613)
+ ..controls (1.788291,0.632147) and (1.793056,0.623894)
+ ..(1.793056,0.614962)
+ ..controls (1.793056,0.606031) and (1.788291,0.597778)
+ ..(1.780556,0.593312)
+ ..controls (1.772821,0.588846) and (1.763291,0.588846)
+ ..(1.755556,0.593312)\dpicstop
+\dpicdraw (1.755556,0.593312)
+ --(1.750744,0.59609)\dpicstop
+\dpicdraw (1.755556,0.593312)
+ ..controls (1.763291,0.588846) and (1.768056,0.580593)
+ ..(1.768056,0.571661)
+ ..controls (1.768056,0.562729) and (1.763291,0.554476)
+ ..(1.755556,0.55001)
+ ..controls (1.747821,0.545545) and (1.738291,0.545545)
+ ..(1.730556,0.55001)\dpicstop
+\dpicdraw (1.730556,0.55001)
+ --(1.725744,0.552788)\dpicstop
+\dpicdraw (1.730556,0.55001)
+ ..controls (1.738291,0.545545) and (1.743056,0.537291)
+ ..(1.743056,0.52836)
+ ..controls (1.743056,0.519428) and (1.738291,0.511175)
+ ..(1.730556,0.506709)
+ ..controls (1.722821,0.502243) and (1.713291,0.502243)
+ ..(1.705556,0.506709)\dpicstop
+\dpicdraw (1.705556,0.506709)
+ --(1.700744,0.509487)\dpicstop
+\dpicdraw (1.705556,0.506709)
+ --(1.605556,0.333504)\dpicstop
+\dpicdraw (1.605556,0.333504)
+ --(1.605556,0.133504)\dpicstop
+\dpicdraw (1.605556,0.133504)
+ --(1.6,0.133504)\dpicstop
+\dpicdraw (1.605556,0.133504)
+ ..controls (1.614487,0.133504) and (1.62274,0.128739)
+ ..(1.627206,0.121004)
+ ..controls (1.631672,0.113269) and (1.631672,0.103739)
+ ..(1.627206,0.096004)
+ ..controls (1.62274,0.088269) and (1.614487,0.083504)
+ ..(1.605556,0.083504)\dpicstop
+\dpicdraw (1.605556,0.083504)
+ --(1.6,0.083504)\dpicstop
+\dpicdraw (1.605556,0.083504)
+ ..controls (1.614487,0.083504) and (1.62274,0.078739)
+ ..(1.627206,0.071004)
+ ..controls (1.631672,0.063269) and (1.631672,0.053739)
+ ..(1.627206,0.046004)
+ ..controls (1.62274,0.038269) and (1.614487,0.033504)
+ ..(1.605556,0.033504)\dpicstop
+\dpicdraw (1.605556,0.033504)
+ --(1.6,0.033504)\dpicstop
+\dpicdraw (1.605556,0.033504)
+ ..controls (1.614487,0.033504) and (1.62274,0.028739)
+ ..(1.627206,0.021004)
+ ..controls (1.631672,0.013269) and (1.631672,0.003739)
+ ..(1.627206,-0.003996)
+ ..controls (1.62274,-0.011731) and (1.614487,-0.016496)
+ ..(1.605556,-0.016496)\dpicstop
+\dpicdraw (1.605556,-0.016496)
+ --(1.6,-0.016496)\dpicstop
+\dpicdraw (1.605556,-0.016496)
+ ..controls (1.614487,-0.016496) and (1.62274,-0.021261)
+ ..(1.627206,-0.028996)
+ ..controls (1.631672,-0.036731) and (1.631672,-0.046261)
+ ..(1.627206,-0.053996)
+ ..controls (1.62274,-0.061731) and (1.614487,-0.066496)
+ ..(1.605556,-0.066496)\dpicstop
+\dpicdraw (1.605556,-0.066496)
+ --(1.6,-0.066496)\dpicstop
+\dpicdraw (1.605556,-0.066496)
+ --(1.605556,-0.266496)\dpicstop
+\dpicdraw (1.605556,-0.266496)
+ --(1.705556,-0.439701)\dpicstop
+\dpicdraw (1.705556,-0.439701)
+ --(1.700744,-0.442479)\dpicstop
+\dpicdraw (1.705556,-0.439701)
+ ..controls (1.713291,-0.435235) and (1.722821,-0.435235)
+ ..(1.730556,-0.439701)
+ ..controls (1.738291,-0.444167) and (1.743056,-0.45242)
+ ..(1.743056,-0.461352)
+ ..controls (1.743056,-0.470283) and (1.738291,-0.478536)
+ ..(1.730556,-0.483002)\dpicstop
+\dpicdraw (1.730556,-0.483002)
+ --(1.725744,-0.48578)\dpicstop
+\dpicdraw (1.730556,-0.483002)
+ ..controls (1.738291,-0.478536) and (1.747821,-0.478536)
+ ..(1.755556,-0.483002)
+ ..controls (1.763291,-0.487468) and (1.768056,-0.495721)
+ ..(1.768056,-0.504653)
+ ..controls (1.768056,-0.513584) and (1.763291,-0.521838)
+ ..(1.755556,-0.526303)\dpicstop
+\dpicdraw (1.755556,-0.526303)
+ --(1.750744,-0.529081)\dpicstop
+\dpicdraw (1.755556,-0.526303)
+ ..controls (1.763291,-0.521838) and (1.772821,-0.521838)
+ ..(1.780556,-0.526303)
+ ..controls (1.788291,-0.530769) and (1.793056,-0.539022)
+ ..(1.793056,-0.547954)
+ ..controls (1.793056,-0.556886) and (1.788291,-0.565139)
+ ..(1.780556,-0.569605)\dpicstop
+\dpicdraw (1.780556,-0.569605)
+ --(1.775744,-0.572383)\dpicstop
+\dpicdraw (1.780556,-0.569605)
+ ..controls (1.788291,-0.565139) and (1.797821,-0.565139)
+ ..(1.805556,-0.569605)
+ ..controls (1.813291,-0.574071) and (1.818056,-0.582324)
+ ..(1.818056,-0.591255)
+ ..controls (1.818056,-0.600187) and (1.813291,-0.60844)
+ ..(1.805556,-0.612906)\dpicstop
+\dpicdraw (1.805556,-0.612906)
+ --(1.800744,-0.615684)\dpicstop
+\dpicdraw (1.805556,-0.612906)
+ --(1.905556,-0.786111)\dpicstop
+\dpicdraw (1.905556,-0.786111)
+ --(2.078761,-0.886111)\dpicstop
+\dpicdraw (2.078761,-0.886111)
+ --(2.075983,-0.890922)\dpicstop
+\dpicdraw (2.078761,-0.886111)
+ ..controls (2.083226,-0.878376) and (2.09148,-0.873611)
+ ..(2.100411,-0.873611)
+ ..controls (2.109343,-0.873611) and (2.117596,-0.878376)
+ ..(2.122062,-0.886111)
+ ..controls (2.126528,-0.893846) and (2.126528,-0.903376)
+ ..(2.122062,-0.911111)\dpicstop
+\dpicdraw (2.122062,-0.911111)
+ --(2.119284,-0.915922)\dpicstop
+\dpicdraw (2.122062,-0.911111)
+ ..controls (2.126528,-0.903376) and (2.134781,-0.898611)
+ ..(2.143713,-0.898611)
+ ..controls (2.152644,-0.898611) and (2.160897,-0.903376)
+ ..(2.165363,-0.911111)
+ ..controls (2.169829,-0.918846) and (2.169829,-0.928376)
+ ..(2.165363,-0.936111)\dpicstop
+\dpicdraw (2.165363,-0.936111)
+ --(2.162585,-0.940922)\dpicstop
+\dpicdraw (2.165363,-0.936111)
+ ..controls (2.169829,-0.928376) and (2.178082,-0.923611)
+ ..(2.187014,-0.923611)
+ ..controls (2.195945,-0.923611) and (2.204199,-0.928376)
+ ..(2.208664,-0.936111)
+ ..controls (2.21313,-0.943846) and (2.21313,-0.953376)
+ ..(2.208664,-0.961111)\dpicstop
+\dpicdraw (2.208664,-0.961111)
+ --(2.205887,-0.965922)\dpicstop
+\dpicdraw (2.208664,-0.961111)
+ ..controls (2.21313,-0.953376) and (2.221383,-0.948611)
+ ..(2.230315,-0.948611)
+ ..controls (2.239247,-0.948611) and (2.2475,-0.953376)
+ ..(2.251966,-0.961111)
+ ..controls (2.256432,-0.968846) and (2.256432,-0.978376)
+ ..(2.251966,-0.986111)\dpicstop
+\dpicdraw (2.251966,-0.986111)
+ --(2.249188,-0.990922)\dpicstop
+\dpicdraw (2.251966,-0.986111)
+ --(2.425171,-1.086111)\dpicstop
+\dpicdraw (2.485171,-0.862188)
+ --(2.611784,-0.862188)\dpicstop
+\dpicdraw[line width=0.4bp](2.611784,-0.862188) circle (0.00109in)\dpicstop
+\dpicdraw (2.611784,-0.862188)
+ ..controls (2.603019,-0.843391) and (2.610075,-0.821012)
+ ..(2.628036,-0.810642)
+ ..controls (2.645998,-0.800272) and (2.668906,-0.805351)
+ ..(2.680802,-0.82234)
+ ..controls (2.692698,-0.83933) and (2.689636,-0.862594)
+ ..(2.673748,-0.875925)\dpicstop
+\dpicdraw[line width=0.4bp](2.673748,-0.875925) circle (0.00109in)\dpicstop
+\dpicdraw (2.673748,-0.875925)
+ ..controls (2.660866,-0.865116) and (2.65612,-0.847404)
+ ..(2.661872,-0.831603)
+ ..controls (2.667623,-0.815801) and (2.682643,-0.805283)
+ ..(2.699459,-0.805283)
+ ..controls (2.716275,-0.805283) and (2.731296,-0.815801)
+ ..(2.737047,-0.831603)
+ ..controls (2.742798,-0.847404) and (2.738053,-0.865116)
+ ..(2.725171,-0.875925)\dpicstop
+\dpicdraw[line width=0.4bp](2.725171,-0.875925) circle (0.00109in)\dpicstop
+\dpicdraw (2.725171,-0.875925)
+ ..controls (2.712289,-0.865116) and (2.707543,-0.847404)
+ ..(2.713295,-0.831603)
+ ..controls (2.719046,-0.815801) and (2.734066,-0.805283)
+ ..(2.750882,-0.805283)
+ ..controls (2.767698,-0.805283) and (2.782719,-0.815801)
+ ..(2.78847,-0.831603)
+ ..controls (2.794221,-0.847404) and (2.789476,-0.865116)
+ ..(2.776594,-0.875925)\dpicstop
+\dpicdraw[line width=0.4bp](2.776594,-0.875925) circle (0.00109in)\dpicstop
+\dpicdraw (2.776594,-0.875925)
+ ..controls (2.760706,-0.862594) and (2.757643,-0.83933)
+ ..(2.769539,-0.82234)
+ ..controls (2.781435,-0.805351) and (2.804344,-0.800272)
+ ..(2.822305,-0.810642)
+ ..controls (2.840267,-0.821012) and (2.847323,-0.843391)
+ ..(2.838558,-0.862188)\dpicstop
+\dpicdraw[line width=0.4bp](2.838558,-0.862188) circle (0.00109in)\dpicstop
+\dpicdraw (2.838558,-0.862188)
+ --(2.965171,-0.862188)\dpicstop
+\dpicdraw (2.965171,-0.862188)
+ --(3.074821,-0.798881)\dpicstop
+\dpicdraw[line width=0.4bp](3.074821,-0.798881) circle (0.00109in)\dpicstop
+\dpicdraw (3.074821,-0.798881)
+ ..controls (3.057832,-0.786985) and (3.052753,-0.764077)
+ ..(3.063123,-0.746115)
+ ..controls (3.073493,-0.728154) and (3.095872,-0.721098)
+ ..(3.114669,-0.729863)
+ ..controls (3.133466,-0.738628) and (3.142445,-0.760307)
+ ..(3.135352,-0.779796)\dpicstop
+\dpicdraw[line width=0.4bp](3.135352,-0.779796) circle (0.00109in)\dpicstop
+\dpicdraw (3.135352,-0.779796)
+ ..controls (3.118791,-0.776876) and (3.105825,-0.76391)
+ ..(3.102905,-0.74735)
+ ..controls (3.099985,-0.730789) and (3.107735,-0.714171)
+ ..(3.122298,-0.705763)
+ ..controls (3.136861,-0.697355) and (3.155127,-0.698953)
+ ..(3.168009,-0.709762)
+ ..controls (3.180891,-0.720571) and (3.185637,-0.738283)
+ ..(3.179885,-0.754085)\dpicstop
+\dpicdraw[line width=0.4bp](3.179885,-0.754085) circle (0.00109in)\dpicstop
+\dpicdraw (3.179885,-0.754085)
+ ..controls (3.163325,-0.751165) and (3.150359,-0.738199)
+ ..(3.147439,-0.721638)
+ ..controls (3.144519,-0.705078) and (3.152268,-0.688459)
+ ..(3.166831,-0.680051)
+ ..controls (3.181394,-0.671643) and (3.199661,-0.673242)
+ ..(3.212543,-0.684051)
+ ..controls (3.225425,-0.69486) and (3.23017,-0.712571)
+ ..(3.224419,-0.728373)\dpicstop
+\dpicdraw[line width=0.4bp](3.224419,-0.728373) circle (0.00109in)\dpicstop
+\dpicdraw (3.224419,-0.728373)
+ ..controls (3.203994,-0.724772) and (3.18971,-0.706156)
+ ..(3.191517,-0.685495)
+ ..controls (3.193325,-0.664833) and (3.210625,-0.648981)
+ ..(3.231365,-0.648981)
+ ..controls (3.252105,-0.648981) and (3.269405,-0.664833)
+ ..(3.271213,-0.685495)\dpicstop
+\dpicdraw[line width=0.4bp](3.271213,-0.685495) circle (0.00109in)\dpicstop
+\dpicdraw (3.271213,-0.685495)
+ --(3.380863,-0.622188)\dpicstop
+\dpicdraw (3.380863,-0.622188)
+ --(3.44417,-0.512538)\dpicstop
+\dpicdraw[line width=0.4bp](3.44417,-0.512538) circle (0.00109in)\dpicstop
+\dpicdraw (3.44417,-0.512538)
+ ..controls (3.423508,-0.51073) and (3.407656,-0.49343)
+ ..(3.407656,-0.47269)
+ ..controls (3.407656,-0.45195) and (3.423508,-0.43465)
+ ..(3.44417,-0.432842)
+ ..controls (3.464831,-0.431035) and (3.483447,-0.445319)
+ ..(3.487048,-0.465744)\dpicstop
+\dpicdraw[line width=0.4bp](3.487048,-0.465744) circle (0.00109in)\dpicstop
+\dpicdraw (3.487048,-0.465744)
+ ..controls (3.471246,-0.471496) and (3.453535,-0.46675)
+ ..(3.442726,-0.453868)
+ ..controls (3.431916,-0.440986) and (3.430318,-0.422719)
+ ..(3.438726,-0.408156)
+ ..controls (3.447134,-0.393593) and (3.463753,-0.385844)
+ ..(3.480313,-0.388764)
+ ..controls (3.496874,-0.391684) and (3.50984,-0.40465)
+ ..(3.51276,-0.42121)\dpicstop
+\dpicdraw[line width=0.4bp](3.51276,-0.42121) circle (0.00109in)\dpicstop
+\dpicdraw (3.51276,-0.42121)
+ ..controls (3.496958,-0.426962) and (3.479246,-0.422216)
+ ..(3.468437,-0.409334)
+ ..controls (3.457628,-0.396453) and (3.45603,-0.378186)
+ ..(3.464438,-0.363623)
+ ..controls (3.472846,-0.34906) and (3.489464,-0.34131)
+ ..(3.506025,-0.34423)
+ ..controls (3.522585,-0.347151) and (3.535551,-0.360116)
+ ..(3.538471,-0.376677)\dpicstop
+\dpicdraw[line width=0.4bp](3.538471,-0.376677) circle (0.00109in)\dpicstop
+\dpicdraw (3.538471,-0.376677)
+ ..controls (3.518982,-0.38377) and (3.497303,-0.374791)
+ ..(3.488538,-0.355994)
+ ..controls (3.479773,-0.337197) and (3.486829,-0.314818)
+ ..(3.50479,-0.304448)
+ ..controls (3.522752,-0.294078) and (3.54566,-0.299157)
+ ..(3.557556,-0.316146)\dpicstop
+\dpicdraw[line width=0.4bp](3.557556,-0.316146) circle (0.00109in)\dpicstop
+\dpicdraw (3.557556,-0.316146)
+ --(3.620863,-0.206496)\dpicstop
+\dpicdraw (3.620863,-0.206496)
+ --(3.620863,-0.079883)\dpicstop
+\dpicdraw[line width=0.4bp](3.620863,-0.079883) circle (0.00109in)\dpicstop
+\dpicdraw (3.620863,-0.079883)
+ ..controls (3.602066,-0.088648) and (3.579687,-0.081592)
+ ..(3.569317,-0.06363)
+ ..controls (3.558947,-0.045669) and (3.564026,-0.02276)
+ ..(3.581015,-0.010864)
+ ..controls (3.598005,0.001032) and (3.621268,-0.002031)
+ ..(3.6346,-0.017919)\dpicstop
+\dpicdraw[line width=0.4bp](3.6346,-0.017919) circle (0.00109in)\dpicstop
+\dpicdraw (3.6346,-0.017919)
+ ..controls (3.623791,-0.030801) and (3.606079,-0.035546)
+ ..(3.590277,-0.029795)
+ ..controls (3.574476,-0.024044) and (3.563958,-0.009023)
+ ..(3.563958,0.007793)
+ ..controls (3.563958,0.024609) and (3.574476,0.039629)
+ ..(3.590277,0.04538)
+ ..controls (3.606079,0.051132) and (3.623791,0.046386)
+ ..(3.6346,0.033504)\dpicstop
+\dpicdraw[line width=0.4bp](3.6346,0.033504) circle (0.00109in)\dpicstop
+\dpicdraw (3.6346,0.033504)
+ ..controls (3.623791,0.020622) and (3.606079,0.015877)
+ ..(3.590277,0.021628)
+ ..controls (3.574476,0.027379) and (3.563958,0.0424)
+ ..(3.563958,0.059216)
+ ..controls (3.563958,0.076032) and (3.574476,0.091052)
+ ..(3.590277,0.096803)
+ ..controls (3.606079,0.102555) and (3.623791,0.097809)
+ ..(3.6346,0.084927)\dpicstop
+\dpicdraw[line width=0.4bp](3.6346,0.084927) circle (0.00109in)\dpicstop
+\dpicdraw (3.6346,0.084927)
+ ..controls (3.621268,0.069039) and (3.598005,0.065976)
+ ..(3.581015,0.077873)
+ ..controls (3.564026,0.089769) and (3.558947,0.112677)
+ ..(3.569317,0.130639)
+ ..controls (3.579687,0.1486) and (3.602066,0.155656)
+ ..(3.620863,0.146891)\dpicstop
+\dpicdraw[line width=0.4bp](3.620863,0.146891) circle (0.00109in)\dpicstop
+\dpicdraw (3.620863,0.146891)
+ --(3.620863,0.273504)\dpicstop
+\dpicdraw (3.620863,0.273504)
+ --(3.557556,0.383154)\dpicstop
+\dpicdraw[line width=0.4bp](3.557556,0.383154) circle (0.00109in)\dpicstop
+\dpicdraw (3.557556,0.383154)
+ ..controls (3.54566,0.366165) and (3.522752,0.361086)
+ ..(3.50479,0.371456)
+ ..controls (3.486829,0.381826) and (3.479773,0.404205)
+ ..(3.488538,0.423002)
+ ..controls (3.497303,0.441799) and (3.518982,0.450779)
+ ..(3.538471,0.443685)\dpicstop
+\dpicdraw[line width=0.4bp](3.538471,0.443685) circle (0.00109in)\dpicstop
+\dpicdraw (3.538471,0.443685)
+ ..controls (3.535551,0.427125) and (3.522585,0.414159)
+ ..(3.506025,0.411239)
+ ..controls (3.489464,0.408319) and (3.472846,0.416068)
+ ..(3.464438,0.430631)
+ ..controls (3.45603,0.445194) and (3.457628,0.463461)
+ ..(3.468437,0.476343)
+ ..controls (3.479246,0.489224) and (3.496958,0.49397)
+ ..(3.51276,0.488219)\dpicstop
+\dpicdraw[line width=0.4bp](3.51276,0.488219) circle (0.00109in)\dpicstop
+\dpicdraw (3.51276,0.488219)
+ ..controls (3.50984,0.471658) and (3.496874,0.458692)
+ ..(3.480313,0.455772)
+ ..controls (3.463753,0.452852) and (3.447134,0.460602)
+ ..(3.438726,0.475165)
+ ..controls (3.430318,0.489728) and (3.431916,0.507994)
+ ..(3.442726,0.520876)
+ ..controls (3.453535,0.533758) and (3.471246,0.538504)
+ ..(3.487048,0.532752)\dpicstop
+\dpicdraw[line width=0.4bp](3.487048,0.532752) circle (0.00109in)\dpicstop
+\dpicdraw (3.487048,0.532752)
+ ..controls (3.483447,0.512327) and (3.464831,0.498043)
+ ..(3.44417,0.499851)
+ ..controls (3.423508,0.501658) and (3.407656,0.518958)
+ ..(3.407656,0.539698)
+ ..controls (3.407656,0.560439) and (3.423508,0.577738)
+ ..(3.44417,0.579546)\dpicstop
+\dpicdraw[line width=0.4bp](3.44417,0.579546) circle (0.00109in)\dpicstop
+\dpicdraw (3.44417,0.579546)
+ --(3.380863,0.689196)\dpicstop
+\dpicdraw (3.380863,0.689196)
+ --(3.271213,0.752503)\dpicstop
+\dpicdraw[line width=0.4bp](3.271213,0.752503) circle (0.00109in)\dpicstop
+\dpicdraw (3.271213,0.752503)
+ ..controls (3.269405,0.731842) and (3.252105,0.715989)
+ ..(3.231365,0.715989)
+ ..controls (3.210625,0.715989) and (3.193325,0.731842)
+ ..(3.191517,0.752503)
+ ..controls (3.18971,0.773164) and (3.203994,0.79178)
+ ..(3.224419,0.795381)\dpicstop
+\dpicdraw[line width=0.4bp](3.224419,0.795381) circle (0.00109in)\dpicstop
+\dpicdraw (3.224419,0.795381)
+ ..controls (3.23017,0.77958) and (3.225425,0.761868)
+ ..(3.212543,0.751059)
+ ..controls (3.199661,0.74025) and (3.181394,0.738652)
+ ..(3.166831,0.74706)
+ ..controls (3.152268,0.755468) and (3.144519,0.772086)
+ ..(3.147439,0.788647)
+ ..controls (3.150359,0.805207) and (3.163325,0.818173)
+ ..(3.179885,0.821093)\dpicstop
+\dpicdraw[line width=0.4bp](3.179885,0.821093) circle (0.00109in)\dpicstop
+\dpicdraw (3.179885,0.821093)
+ ..controls (3.185637,0.805291) and (3.180891,0.787579)
+ ..(3.168009,0.77677)
+ ..controls (3.155127,0.765961) and (3.136861,0.764363)
+ ..(3.122298,0.772771)
+ ..controls (3.107735,0.781179) and (3.099985,0.797798)
+ ..(3.102905,0.814358)
+ ..controls (3.105825,0.830919) and (3.118791,0.843884)
+ ..(3.135352,0.846804)\dpicstop
+\dpicdraw[line width=0.4bp](3.135352,0.846804) circle (0.00109in)\dpicstop
+\dpicdraw (3.135352,0.846804)
+ ..controls (3.142445,0.827315) and (3.133466,0.805637)
+ ..(3.114669,0.796871)
+ ..controls (3.095872,0.788106) and (3.073493,0.795162)
+ ..(3.063123,0.813124)
+ ..controls (3.052753,0.831085) and (3.057832,0.853994)
+ ..(3.074821,0.86589)\dpicstop
+\dpicdraw[line width=0.4bp](3.074821,0.86589) circle (0.00109in)\dpicstop
+\dpicdraw (3.074821,0.86589)
+ --(2.965171,0.929196)\dpicstop
+\dpicdraw (2.965171,0.929196)
+ --(2.838558,0.929196)\dpicstop
+\dpicdraw[line width=0.4bp](2.838558,0.929196) circle (0.00109in)\dpicstop
+\dpicdraw (2.838558,0.929196)
+ ..controls (2.847323,0.910399) and (2.840267,0.888021)
+ ..(2.822305,0.877651)
+ ..controls (2.804344,0.86728) and (2.781435,0.872359)
+ ..(2.769539,0.889349)
+ ..controls (2.757643,0.906338) and (2.760706,0.929602)
+ ..(2.776594,0.942933)\dpicstop
+\dpicdraw[line width=0.4bp](2.776594,0.942933) circle (0.00109in)\dpicstop
+\dpicdraw (2.776594,0.942933)
+ ..controls (2.789476,0.932124) and (2.794221,0.914413)
+ ..(2.78847,0.898611)
+ ..controls (2.782719,0.882809) and (2.767698,0.872292)
+ ..(2.750882,0.872292)
+ ..controls (2.734066,0.872292) and (2.719046,0.882809)
+ ..(2.713295,0.898611)
+ ..controls (2.707543,0.914413) and (2.712289,0.932124)
+ ..(2.725171,0.942933)\dpicstop
+\dpicdraw[line width=0.4bp](2.725171,0.942933) circle (0.00109in)\dpicstop
+\dpicdraw (2.725171,0.942933)
+ ..controls (2.738053,0.932124) and (2.742798,0.914413)
+ ..(2.737047,0.898611)
+ ..controls (2.731296,0.882809) and (2.716275,0.872292)
+ ..(2.699459,0.872292)
+ ..controls (2.682643,0.872292) and (2.667623,0.882809)
+ ..(2.661872,0.898611)
+ ..controls (2.65612,0.914413) and (2.660866,0.932124)
+ ..(2.673748,0.942933)\dpicstop
+\dpicdraw[line width=0.4bp](2.673748,0.942933) circle (0.00109in)\dpicstop
+\dpicdraw (2.673748,0.942933)
+ ..controls (2.689636,0.929602) and (2.692698,0.906338)
+ ..(2.680802,0.889349)
+ ..controls (2.668906,0.872359) and (2.645998,0.86728)
+ ..(2.628036,0.877651)
+ ..controls (2.610075,0.888021) and (2.603019,0.910399)
+ ..(2.611784,0.929196)\dpicstop
+\dpicdraw[line width=0.4bp](2.611784,0.929196) circle (0.00109in)\dpicstop
+\dpicdraw (2.611784,0.929196)
+ --(2.485171,0.929196)\dpicstop
+\dpicdraw (2.485171,0.929196)
+ --(2.375521,0.86589)\dpicstop
+\dpicdraw[line width=0.4bp](2.375521,0.86589) circle (0.00109in)\dpicstop
+\dpicdraw (2.375521,0.86589)
+ ..controls (2.39251,0.853994) and (2.397589,0.831085)
+ ..(2.387219,0.813124)
+ ..controls (2.376848,0.795162) and (2.35447,0.788106)
+ ..(2.335673,0.796871)
+ ..controls (2.316876,0.805637) and (2.307896,0.827315)
+ ..(2.31499,0.846804)\dpicstop
+\dpicdraw[line width=0.4bp](2.31499,0.846804) circle (0.00109in)\dpicstop
+\dpicdraw (2.31499,0.846804)
+ ..controls (2.33155,0.843884) and (2.344516,0.830919)
+ ..(2.347436,0.814358)
+ ..controls (2.350356,0.797798) and (2.342607,0.781179)
+ ..(2.328044,0.772771)
+ ..controls (2.313481,0.764363) and (2.295214,0.765961)
+ ..(2.282332,0.77677)
+ ..controls (2.269451,0.787579) and (2.264705,0.805291)
+ ..(2.270456,0.821093)\dpicstop
+\dpicdraw[line width=0.4bp](2.270456,0.821093) circle (0.00109in)\dpicstop
+\dpicdraw (2.270456,0.821093)
+ ..controls (2.287017,0.818173) and (2.299983,0.805207)
+ ..(2.302903,0.788647)
+ ..controls (2.305823,0.772086) and (2.298073,0.755468)
+ ..(2.28351,0.74706)
+ ..controls (2.268947,0.738652) and (2.25068,0.74025)
+ ..(2.237799,0.751059)
+ ..controls (2.224917,0.761868) and (2.220171,0.77958)
+ ..(2.225923,0.795381)\dpicstop
+\dpicdraw[line width=0.4bp](2.225923,0.795381) circle (0.00109in)\dpicstop
+\dpicdraw (2.225923,0.795381)
+ ..controls (2.246348,0.79178) and (2.260632,0.773164)
+ ..(2.258824,0.752503)
+ ..controls (2.257017,0.731842) and (2.239717,0.715989)
+ ..(2.218977,0.715989)
+ ..controls (2.198236,0.715989) and (2.180936,0.731842)
+ ..(2.179129,0.752503)\dpicstop
+\dpicdraw[line width=0.4bp](2.179129,0.752503) circle (0.00109in)\dpicstop
+\dpicdraw (2.179129,0.752503)
+ --(2.069479,0.689196)\dpicstop
+\dpicdraw (2.069479,0.689196)
+ --(2.006172,0.579546)\dpicstop
+\dpicdraw[line width=0.4bp](2.006172,0.579546) circle (0.00109in)\dpicstop
+\dpicdraw (2.006172,0.579546)
+ ..controls (2.026833,0.577738) and (2.042686,0.560439)
+ ..(2.042686,0.539698)
+ ..controls (2.042686,0.518958) and (2.026833,0.501658)
+ ..(2.006172,0.499851)
+ ..controls (1.985511,0.498043) and (1.966895,0.512327)
+ ..(1.963293,0.532752)\dpicstop
+\dpicdraw[line width=0.4bp](1.963293,0.532752) circle (0.00109in)\dpicstop
+\dpicdraw (1.963293,0.532752)
+ ..controls (1.979095,0.538504) and (1.996807,0.533758)
+ ..(2.007616,0.520876)
+ ..controls (2.018425,0.507994) and (2.020023,0.489728)
+ ..(2.011615,0.475165)
+ ..controls (2.003207,0.460602) and (1.986589,0.452852)
+ ..(1.970028,0.455772)
+ ..controls (1.953468,0.458692) and (1.940502,0.471658)
+ ..(1.937582,0.488219)\dpicstop
+\dpicdraw[line width=0.4bp](1.937582,0.488219) circle (0.00109in)\dpicstop
+\dpicdraw (1.937582,0.488219)
+ ..controls (1.953384,0.49397) and (1.971095,0.489224)
+ ..(1.981905,0.476343)
+ ..controls (1.992714,0.463461) and (1.994312,0.445194)
+ ..(1.985904,0.430631)
+ ..controls (1.977496,0.416068) and (1.960877,0.408319)
+ ..(1.944317,0.411239)
+ ..controls (1.927756,0.414159) and (1.914791,0.427125)
+ ..(1.91187,0.443685)\dpicstop
+\dpicdraw[line width=0.4bp](1.91187,0.443685) circle (0.00109in)\dpicstop
+\dpicdraw (1.91187,0.443685)
+ ..controls (1.93136,0.450779) and (1.953038,0.441799)
+ ..(1.961804,0.423002)
+ ..controls (1.970569,0.404205) and (1.963513,0.381826)
+ ..(1.945551,0.371456)
+ ..controls (1.92759,0.361086) and (1.904681,0.366165)
+ ..(1.892785,0.383154)\dpicstop
+\dpicdraw[line width=0.4bp](1.892785,0.383154) circle (0.00109in)\dpicstop
+\dpicdraw (1.892785,0.383154)
+ --(1.829479,0.273504)\dpicstop
+\dpicdraw (1.829479,0.273504)
+ --(1.829479,0.146891)\dpicstop
+\dpicdraw[line width=0.4bp](1.829479,0.146891) circle (0.00109in)\dpicstop
+\dpicdraw (1.829479,0.146891)
+ ..controls (1.848276,0.155656) and (1.870654,0.1486)
+ ..(1.881024,0.130639)
+ ..controls (1.891394,0.112677) and (1.886316,0.089769)
+ ..(1.869326,0.077873)
+ ..controls (1.852337,0.065976) and (1.829073,0.069039)
+ ..(1.815742,0.084927)\dpicstop
+\dpicdraw[line width=0.4bp](1.815742,0.084927) circle (0.00109in)\dpicstop
+\dpicdraw (1.815742,0.084927)
+ ..controls (1.826551,0.097809) and (1.844262,0.102555)
+ ..(1.860064,0.096803)
+ ..controls (1.875866,0.091052) and (1.886383,0.076032)
+ ..(1.886383,0.059216)
+ ..controls (1.886383,0.0424) and (1.875866,0.027379)
+ ..(1.860064,0.021628)
+ ..controls (1.844262,0.015877) and (1.826551,0.020622)
+ ..(1.815742,0.033504)\dpicstop
+\dpicdraw[line width=0.4bp](1.815742,0.033504) circle (0.00109in)\dpicstop
+\dpicdraw (1.815742,0.033504)
+ ..controls (1.826551,0.046386) and (1.844262,0.051132)
+ ..(1.860064,0.04538)
+ ..controls (1.875866,0.039629) and (1.886383,0.024609)
+ ..(1.886383,0.007793)
+ ..controls (1.886383,-0.009023) and (1.875866,-0.024044)
+ ..(1.860064,-0.029795)
+ ..controls (1.844262,-0.035546) and (1.826551,-0.030801)
+ ..(1.815742,-0.017919)\dpicstop
+\dpicdraw[line width=0.4bp](1.815742,-0.017919) circle (0.00109in)\dpicstop
+\dpicdraw (1.815742,-0.017919)
+ ..controls (1.829073,-0.002031) and (1.852337,0.001032)
+ ..(1.869326,-0.010864)
+ ..controls (1.886316,-0.02276) and (1.891394,-0.045669)
+ ..(1.881024,-0.06363)
+ ..controls (1.870654,-0.081592) and (1.848276,-0.088648)
+ ..(1.829479,-0.079883)\dpicstop
+\dpicdraw[line width=0.4bp](1.829479,-0.079883) circle (0.00109in)\dpicstop
+\dpicdraw (1.829479,-0.079883)
+ --(1.829479,-0.206496)\dpicstop
+\dpicdraw (1.829479,-0.206496)
+ --(1.892785,-0.316146)\dpicstop
+\dpicdraw[line width=0.4bp](1.892785,-0.316146) circle (0.00109in)\dpicstop
+\dpicdraw (1.892785,-0.316146)
+ ..controls (1.904681,-0.299157) and (1.92759,-0.294078)
+ ..(1.945551,-0.304448)
+ ..controls (1.963513,-0.314818) and (1.970569,-0.337197)
+ ..(1.961804,-0.355994)
+ ..controls (1.953038,-0.374791) and (1.93136,-0.38377)
+ ..(1.91187,-0.376677)\dpicstop
+\dpicdraw[line width=0.4bp](1.91187,-0.376677) circle (0.00109in)\dpicstop
+\dpicdraw (1.91187,-0.376677)
+ ..controls (1.914791,-0.360116) and (1.927756,-0.347151)
+ ..(1.944317,-0.34423)
+ ..controls (1.960877,-0.34131) and (1.977496,-0.34906)
+ ..(1.985904,-0.363623)
+ ..controls (1.994312,-0.378186) and (1.992714,-0.396453)
+ ..(1.981905,-0.409334)
+ ..controls (1.971095,-0.422216) and (1.953384,-0.426962)
+ ..(1.937582,-0.42121)\dpicstop
+\dpicdraw[line width=0.4bp](1.937582,-0.42121) circle (0.00109in)\dpicstop
+\dpicdraw (1.937582,-0.42121)
+ ..controls (1.940502,-0.40465) and (1.953468,-0.391684)
+ ..(1.970028,-0.388764)
+ ..controls (1.986589,-0.385844) and (2.003207,-0.393593)
+ ..(2.011615,-0.408156)
+ ..controls (2.020023,-0.422719) and (2.018425,-0.440986)
+ ..(2.007616,-0.453868)
+ ..controls (1.996807,-0.46675) and (1.979095,-0.471496)
+ ..(1.963293,-0.465744)\dpicstop
+\dpicdraw[line width=0.4bp](1.963293,-0.465744) circle (0.00109in)\dpicstop
+\dpicdraw (1.963293,-0.465744)
+ ..controls (1.966895,-0.445319) and (1.985511,-0.431035)
+ ..(2.006172,-0.432842)
+ ..controls (2.026833,-0.43465) and (2.042686,-0.45195)
+ ..(2.042686,-0.47269)
+ ..controls (2.042686,-0.49343) and (2.026833,-0.51073)
+ ..(2.006172,-0.512538)\dpicstop
+\dpicdraw[line width=0.4bp](2.006172,-0.512538) circle (0.00109in)\dpicstop
+\dpicdraw (2.006172,-0.512538)
+ --(2.069479,-0.622188)\dpicstop
+\dpicdraw (2.069479,-0.622188)
+ --(2.179129,-0.685495)\dpicstop
+\dpicdraw[line width=0.4bp](2.179129,-0.685495) circle (0.00109in)\dpicstop
+\dpicdraw (2.179129,-0.685495)
+ ..controls (2.180936,-0.664833) and (2.198236,-0.648981)
+ ..(2.218977,-0.648981)
+ ..controls (2.239717,-0.648981) and (2.257017,-0.664833)
+ ..(2.258824,-0.685495)
+ ..controls (2.260632,-0.706156) and (2.246348,-0.724772)
+ ..(2.225923,-0.728373)\dpicstop
+\dpicdraw[line width=0.4bp](2.225923,-0.728373) circle (0.00109in)\dpicstop
+\dpicdraw (2.225923,-0.728373)
+ ..controls (2.220171,-0.712571) and (2.224917,-0.69486)
+ ..(2.237799,-0.684051)
+ ..controls (2.25068,-0.673242) and (2.268947,-0.671643)
+ ..(2.28351,-0.680051)
+ ..controls (2.298073,-0.688459) and (2.305823,-0.705078)
+ ..(2.302903,-0.721638)
+ ..controls (2.299983,-0.738199) and (2.287017,-0.751165)
+ ..(2.270456,-0.754085)\dpicstop
+\dpicdraw[line width=0.4bp](2.270456,-0.754085) circle (0.00109in)\dpicstop
+\dpicdraw (2.270456,-0.754085)
+ ..controls (2.264705,-0.738283) and (2.269451,-0.720571)
+ ..(2.282332,-0.709762)
+ ..controls (2.295214,-0.698953) and (2.313481,-0.697355)
+ ..(2.328044,-0.705763)
+ ..controls (2.342607,-0.714171) and (2.350356,-0.730789)
+ ..(2.347436,-0.74735)
+ ..controls (2.344516,-0.76391) and (2.33155,-0.776876)
+ ..(2.31499,-0.779796)\dpicstop
+\dpicdraw[line width=0.4bp](2.31499,-0.779796) circle (0.00109in)\dpicstop
+\dpicdraw (2.31499,-0.779796)
+ ..controls (2.307896,-0.760307) and (2.316876,-0.738628)
+ ..(2.335673,-0.729863)
+ ..controls (2.35447,-0.721098) and (2.376848,-0.728154)
+ ..(2.387219,-0.746115)
+ ..controls (2.397589,-0.764077) and (2.39251,-0.786985)
+ ..(2.375521,-0.798881)\dpicstop
+\dpicdraw[line width=0.4bp](2.375521,-0.798881) circle (0.00109in)\dpicstop
+\dpicdraw (2.375521,-0.798881)
+ --(2.485171,-0.862188)\dpicstop
+\dpicdraw (2.545171,-0.638265)
+ --(2.625171,-0.638265)
+ --(2.641837,-0.604932)
+ --(2.675171,-0.671598)
+ --(2.708504,-0.604932)
+ --(2.741837,-0.671598)
+ --(2.775171,-0.604932)
+ --(2.808504,-0.671598)
+ --(2.825171,-0.638265)
+ --(2.905171,-0.638265)\dpicstop
+\dpicdraw (2.905171,-0.638265)
+ --(2.974453,-0.598265)
+ --(2.97222,-0.561064)
+ --(3.034421,-0.602133)
+ --(3.029955,-0.527731)
+ --(3.092156,-0.568799)
+ --(3.08769,-0.494398)
+ --(3.149891,-0.535466)
+ --(3.147658,-0.498265)
+ --(3.21694,-0.458265)\dpicstop
+\dpicdraw (3.21694,-0.458265)
+ --(3.25694,-0.388983)
+ --(3.236406,-0.357883)
+ --(3.310807,-0.362348)
+ --(3.269739,-0.300148)
+ --(3.344141,-0.304613)
+ --(3.303072,-0.242413)
+ --(3.377474,-0.246878)
+ --(3.35694,-0.215778)
+ --(3.39694,-0.146496)\dpicstop
+\dpicdraw (3.39694,-0.146496)
+ --(3.39694,-0.066496)
+ --(3.363607,-0.049829)
+ --(3.430273,-0.016496)
+ --(3.363607,0.016837)
+ --(3.430273,0.050171)
+ --(3.363607,0.083504)
+ --(3.430273,0.116837)
+ --(3.39694,0.133504)
+ --(3.39694,0.213504)\dpicstop
+\dpicdraw (3.39694,0.213504)
+ --(3.35694,0.282786)
+ --(3.319739,0.280553)
+ --(3.360807,0.342754)
+ --(3.286406,0.338288)
+ --(3.327474,0.400489)
+ --(3.253072,0.396023)
+ --(3.294141,0.458224)
+ --(3.25694,0.455991)
+ --(3.21694,0.525273)\dpicstop
+\dpicdraw (3.21694,0.525273)
+ --(3.147658,0.565273)
+ --(3.116557,0.544739)
+ --(3.121023,0.619141)
+ --(3.058822,0.578072)
+ --(3.063288,0.652474)
+ --(3.001087,0.611406)
+ --(3.005553,0.685807)
+ --(2.974453,0.665273)
+ --(2.905171,0.705273)\dpicstop
+\dpicdraw (2.905171,0.705273)
+ --(2.825171,0.705273)
+ --(2.808504,0.67194)
+ --(2.775171,0.738607)
+ --(2.741837,0.67194)
+ --(2.708504,0.738607)
+ --(2.675171,0.67194)
+ --(2.641837,0.738607)
+ --(2.625171,0.705273)
+ --(2.545171,0.705273)\dpicstop
+\dpicdraw (2.545171,0.705273)
+ --(2.475889,0.665273)
+ --(2.478122,0.628072)
+ --(2.415921,0.669141)
+ --(2.420387,0.594739)
+ --(2.358186,0.635807)
+ --(2.362652,0.561406)
+ --(2.300451,0.602474)
+ --(2.302684,0.565273)
+ --(2.233402,0.525273)\dpicstop
+\dpicdraw (2.233402,0.525273)
+ --(2.193402,0.455991)
+ --(2.213936,0.424891)
+ --(2.139534,0.429357)
+ --(2.180602,0.367156)
+ --(2.106201,0.371622)
+ --(2.147269,0.309421)
+ --(2.072867,0.313887)
+ --(2.093402,0.282786)
+ --(2.053402,0.213504)\dpicstop
+\dpicdraw (2.053402,0.213504)
+ --(2.053402,0.133504)
+ --(2.086735,0.116837)
+ --(2.020068,0.083504)
+ --(2.086735,0.050171)
+ --(2.020068,0.016837)
+ --(2.086735,-0.016496)
+ --(2.020068,-0.049829)
+ --(2.053402,-0.066496)
+ --(2.053402,-0.146496)\dpicstop
+\dpicdraw (2.053402,-0.146496)
+ --(2.093402,-0.215778)
+ --(2.130602,-0.213545)
+ --(2.089534,-0.275746)
+ --(2.163936,-0.27128)
+ --(2.122867,-0.333481)
+ --(2.197269,-0.329015)
+ --(2.156201,-0.391216)
+ --(2.193402,-0.388983)
+ --(2.233402,-0.458265)\dpicstop
+\dpicdraw (2.233402,-0.458265)
+ --(2.302684,-0.498265)
+ --(2.333784,-0.477731)
+ --(2.329318,-0.552133)
+ --(2.391519,-0.511064)
+ --(2.387053,-0.585466)
+ --(2.449254,-0.544398)
+ --(2.444788,-0.618799)
+ --(2.475889,-0.598265)
+ --(2.545171,-0.638265)\dpicstop
+\dpicdraw (2.605171,-0.414342)
+ --(2.705171,-0.414342)\dpicstop
+\dpicdraw (2.705171,-0.464342)
+ --(2.705171,-0.364342)\dpicstop
+\dpicdraw (2.745171,-0.464342)
+ ..controls (2.727308,-0.433402) and (2.727308,-0.395282)
+ ..(2.745171,-0.364342)\dpicstop
+\dpicdraw (2.731773,-0.414342)
+ --(2.845171,-0.414342)\dpicstop
+\dpicdraw (2.845171,-0.414342)
+ --(2.931773,-0.364342)\dpicstop
+\dpicdraw (2.956773,-0.407643)
+ --(2.906773,-0.321041)\dpicstop
+\dpicdraw (2.991414,-0.387643)
+ ..controls (2.960474,-0.36978) and (2.941414,-0.336767)
+ ..(2.941414,-0.301041)\dpicstop
+\dpicdraw (2.954812,-0.351041)
+ --(3.053017,-0.294342)\dpicstop
+\dpicdraw (3.053017,-0.294342)
+ --(3.103017,-0.207739)\dpicstop
+\dpicdraw (3.146318,-0.232739)
+ --(3.059716,-0.182739)\dpicstop
+\dpicdraw (3.166318,-0.198098)
+ ..controls (3.130592,-0.198098) and (3.097579,-0.179039)
+ ..(3.079716,-0.148098)\dpicstop
+\dpicdraw (3.116318,-0.184701)
+ --(3.173017,-0.086496)\dpicstop
+\dpicdraw (3.173017,-0.086496)
+ --(3.173017,0.013504)\dpicstop
+\dpicdraw (3.223017,0.013504)
+ --(3.123017,0.013504)\dpicstop
+\dpicdraw (3.223017,0.053504)
+ ..controls (3.192077,0.035641) and (3.153957,0.035641)
+ ..(3.123017,0.053504)\dpicstop
+\dpicdraw (3.173017,0.040107)
+ --(3.173017,0.153504)\dpicstop
+\dpicdraw (3.173017,0.153504)
+ --(3.123017,0.240107)\dpicstop
+\dpicdraw (3.166318,0.265107)
+ --(3.079716,0.215107)\dpicstop
+\dpicdraw (3.146318,0.299748)
+ ..controls (3.128455,0.268808) and (3.095442,0.249748)
+ ..(3.059716,0.249748)\dpicstop
+\dpicdraw (3.109716,0.263145)
+ --(3.053017,0.36135)\dpicstop
+\dpicdraw (3.053017,0.36135)
+ --(2.966414,0.41135)\dpicstop
+\dpicdraw (2.991414,0.454651)
+ --(2.941414,0.368049)\dpicstop
+\dpicdraw (2.956773,0.474651)
+ ..controls (2.956773,0.438925) and (2.937713,0.405912)
+ ..(2.906773,0.388049)\dpicstop
+\dpicdraw (2.943376,0.424651)
+ --(2.845171,0.48135)\dpicstop
+\dpicdraw (2.845171,0.48135)
+ --(2.745171,0.48135)\dpicstop
+\dpicdraw (2.745171,0.53135)
+ --(2.745171,0.43135)\dpicstop
+\dpicdraw (2.705171,0.53135)
+ ..controls (2.723034,0.50041) and (2.723034,0.46229)
+ ..(2.705171,0.43135)\dpicstop
+\dpicdraw (2.718568,0.48135)
+ --(2.605171,0.48135)\dpicstop
+\dpicdraw (2.605171,0.48135)
+ --(2.518568,0.43135)\dpicstop
+\dpicdraw (2.493568,0.474651)
+ --(2.543568,0.388049)\dpicstop
+\dpicdraw (2.458927,0.454651)
+ ..controls (2.489867,0.436788) and (2.508927,0.403776)
+ ..(2.508927,0.368049)\dpicstop
+\dpicdraw (2.49553,0.418049)
+ --(2.397325,0.36135)\dpicstop
+\dpicdraw (2.397325,0.36135)
+ --(2.347325,0.274748)\dpicstop
+\dpicdraw (2.304023,0.299748)
+ --(2.390626,0.249748)\dpicstop
+\dpicdraw (2.284023,0.265107)
+ ..controls (2.31975,0.265107) and (2.352763,0.246047)
+ ..(2.370626,0.215107)\dpicstop
+\dpicdraw (2.334023,0.251709)
+ --(2.277325,0.153504)\dpicstop
+\dpicdraw (2.277325,0.153504)
+ --(2.277325,0.053504)\dpicstop
+\dpicdraw (2.227325,0.053504)
+ --(2.327325,0.053504)\dpicstop
+\dpicdraw (2.227325,0.013504)
+ ..controls (2.258265,0.031367) and (2.296385,0.031367)
+ ..(2.327325,0.013504)\dpicstop
+\dpicdraw (2.277325,0.026902)
+ --(2.277325,-0.086496)\dpicstop
+\dpicdraw (2.277325,-0.086496)
+ --(2.327325,-0.173098)\dpicstop
+\dpicdraw (2.284023,-0.198098)
+ --(2.370626,-0.148098)\dpicstop
+\dpicdraw (2.304023,-0.232739)
+ ..controls (2.321887,-0.201799) and (2.354899,-0.182739)
+ ..(2.390626,-0.182739)\dpicstop
+\dpicdraw (2.340626,-0.196137)
+ --(2.397325,-0.294342)\dpicstop
+\dpicdraw (2.397325,-0.294342)
+ --(2.483927,-0.344342)\dpicstop
+\dpicdraw (2.458927,-0.387643)
+ --(2.508927,-0.301041)\dpicstop
+\dpicdraw (2.493568,-0.407643)
+ ..controls (2.493568,-0.371917) and (2.512628,-0.338904)
+ ..(2.543568,-0.321041)\dpicstop
+\dpicdraw (2.506966,-0.357643)
+ --(2.605171,-0.414342)\dpicstop
+\dpicdraw (2.665171,-0.190419)
+ --(2.696303,-0.190419)\dpicstop
+\fill[fill=black,line width=0bp](2.696303,-0.190419)
+ --(2.696303,-0.157086)
+ --(2.748504,-0.190419)
+ --(2.696303,-0.223752)
+ --(2.696303,-0.190419)--cycle
+\dpicstop
+\dpicdraw (2.696303,-0.190419)
+ --(2.696303,-0.157086)
+ --(2.748504,-0.190419)
+ --(2.696303,-0.223752)
+ --(2.696303,-0.190419)\dpicstop
+\dpicdraw (2.754038,-0.227804)
+ --(2.754038,-0.153034)\dpicstop
+\dpicdraw (2.754038,-0.190419)
+ --(2.785171,-0.190419)\dpicstop
+\dpicdraw (2.785171,-0.190419)
+ --(2.812132,-0.174853)\dpicstop
+\fill[fill=black,line width=0bp](2.812132,-0.174853)
+ --(2.795466,-0.145985)
+ --(2.857339,-0.148753)
+ --(2.828799,-0.20372)
+ --(2.812132,-0.174853)--cycle
+\dpicstop
+\dpicdraw (2.812132,-0.174853)
+ --(2.795466,-0.145985)
+ --(2.857339,-0.148753)
+ --(2.828799,-0.20372)
+ --(2.812132,-0.174853)\dpicstop
+\dpicdraw (2.880825,-0.178362)
+ --(2.84344,-0.113609)\dpicstop
+\dpicdraw (2.862132,-0.145985)
+ --(2.889094,-0.130419)\dpicstop
+\dpicdraw (2.889094,-0.130419)
+ --(2.90466,-0.103457)\dpicstop
+\fill[fill=black,line width=0bp](2.90466,-0.103457)
+ --(2.875793,-0.086791)
+ --(2.93076,-0.058251)
+ --(2.933528,-0.120124)
+ --(2.90466,-0.103457)--cycle
+\dpicstop
+\dpicdraw (2.90466,-0.103457)
+ --(2.875793,-0.086791)
+ --(2.93076,-0.058251)
+ --(2.933528,-0.120124)
+ --(2.90466,-0.103457)\dpicstop
+\dpicdraw (2.965904,-0.07215)
+ --(2.901151,-0.034765)\dpicstop
+\dpicdraw (2.933528,-0.053457)
+ --(2.949094,-0.026496)\dpicstop
+\dpicdraw (2.949094,-0.026496)
+ --(2.949094,0.004637)\dpicstop
+\fill[fill=black,line width=0bp](2.949094,0.004637)
+ --(2.915761,0.004637)
+ --(2.949094,0.056837)
+ --(2.982427,0.004637)
+ --(2.949094,0.004637)--cycle
+\dpicstop
+\dpicdraw (2.949094,0.004637)
+ --(2.915761,0.004637)
+ --(2.949094,0.056837)
+ --(2.982427,0.004637)
+ --(2.949094,0.004637)\dpicstop
+\dpicdraw (2.986479,0.062372)
+ --(2.911709,0.062372)\dpicstop
+\dpicdraw (2.949094,0.062372)
+ --(2.949094,0.093504)\dpicstop
+\dpicdraw (2.949094,0.093504)
+ --(2.933528,0.120466)\dpicstop
+\fill[fill=black,line width=0bp](2.933528,0.120466)
+ --(2.90466,0.103799)
+ --(2.907427,0.165672)
+ --(2.962395,0.137132)
+ --(2.933528,0.120466)--cycle
+\dpicstop
+\dpicdraw (2.933528,0.120466)
+ --(2.90466,0.103799)
+ --(2.907427,0.165672)
+ --(2.962395,0.137132)
+ --(2.933528,0.120466)\dpicstop
+\dpicdraw (2.937037,0.189158)
+ --(2.872284,0.151773)\dpicstop
+\dpicdraw (2.90466,0.170466)
+ --(2.889094,0.197427)\dpicstop
+\dpicdraw (2.889094,0.197427)
+ --(2.862132,0.212993)\dpicstop
+\fill[fill=black,line width=0bp](2.862132,0.212993)
+ --(2.845466,0.184126)
+ --(2.816926,0.239094)
+ --(2.878799,0.241861)
+ --(2.862132,0.212993)--cycle
+\dpicstop
+\dpicdraw (2.862132,0.212993)
+ --(2.845466,0.184126)
+ --(2.816926,0.239094)
+ --(2.878799,0.241861)
+ --(2.862132,0.212993)\dpicstop
+\dpicdraw (2.830825,0.274237)
+ --(2.79344,0.209485)\dpicstop
+\dpicdraw (2.812132,0.241861)
+ --(2.785171,0.257427)\dpicstop
+\dpicdraw (2.785171,0.257427)
+ --(2.754038,0.257427)\dpicstop
+\fill[fill=black,line width=0bp](2.754038,0.257427)
+ --(2.754038,0.224094)
+ --(2.701838,0.257427)
+ --(2.754038,0.290761)
+ --(2.754038,0.257427)--cycle
+\dpicstop
+\dpicdraw (2.754038,0.257427)
+ --(2.754038,0.224094)
+ --(2.701838,0.257427)
+ --(2.754038,0.290761)
+ --(2.754038,0.257427)\dpicstop
+\dpicdraw (2.696303,0.294812)
+ --(2.696303,0.220042)\dpicstop
+\dpicdraw (2.696303,0.257427)
+ --(2.665171,0.257427)\dpicstop
+\dpicdraw (2.665171,0.257427)
+ --(2.638209,0.241861)\dpicstop
+\fill[fill=black,line width=0bp](2.638209,0.241861)
+ --(2.654876,0.212993)
+ --(2.593003,0.215761)
+ --(2.621543,0.270728)
+ --(2.638209,0.241861)--cycle
+\dpicstop
+\dpicdraw (2.638209,0.241861)
+ --(2.654876,0.212993)
+ --(2.593003,0.215761)
+ --(2.621543,0.270728)
+ --(2.638209,0.241861)\dpicstop
+\dpicdraw (2.569517,0.24537)
+ --(2.606902,0.180617)\dpicstop
+\dpicdraw (2.588209,0.212993)
+ --(2.561248,0.197427)\dpicstop
+\dpicdraw (2.561248,0.197427)
+ --(2.545682,0.170466)\dpicstop
+\fill[fill=black,line width=0bp](2.545682,0.170466)
+ --(2.574549,0.153799)
+ --(2.519581,0.125259)
+ --(2.516814,0.187132)
+ --(2.545682,0.170466)--cycle
+\dpicstop
+\dpicdraw (2.545682,0.170466)
+ --(2.574549,0.153799)
+ --(2.519581,0.125259)
+ --(2.516814,0.187132)
+ --(2.545682,0.170466)\dpicstop
+\dpicdraw (2.484438,0.139158)
+ --(2.54919,0.101773)\dpicstop
+\dpicdraw (2.516814,0.120466)
+ --(2.501248,0.093504)\dpicstop
+\dpicdraw (2.501248,0.093504)
+ --(2.501248,0.062372)\dpicstop
+\fill[fill=black,line width=0bp](2.501248,0.062372)
+ --(2.534581,0.062372)
+ --(2.501248,0.010171)
+ --(2.467914,0.062372)
+ --(2.501248,0.062372)--cycle
+\dpicstop
+\dpicdraw (2.501248,0.062372)
+ --(2.534581,0.062372)
+ --(2.501248,0.010171)
+ --(2.467914,0.062372)
+ --(2.501248,0.062372)\dpicstop
+\dpicdraw (2.463863,0.004637)
+ --(2.538633,0.004637)\dpicstop
+\dpicdraw (2.501248,0.004637)
+ --(2.501248,-0.026496)\dpicstop
+\dpicdraw (2.501248,-0.026496)
+ --(2.516814,-0.053457)\dpicstop
+\fill[fill=black,line width=0bp](2.516814,-0.053457)
+ --(2.545682,-0.036791)
+ --(2.542914,-0.098664)
+ --(2.487946,-0.070124)
+ --(2.516814,-0.053457)--cycle
+\dpicstop
+\dpicdraw (2.516814,-0.053457)
+ --(2.545682,-0.036791)
+ --(2.542914,-0.098664)
+ --(2.487946,-0.070124)
+ --(2.516814,-0.053457)\dpicstop
+\dpicdraw (2.513305,-0.12215)
+ --(2.578058,-0.084765)\dpicstop
+\dpicdraw (2.545682,-0.103457)
+ --(2.561248,-0.130419)\dpicstop
+\dpicdraw (2.561248,-0.130419)
+ --(2.588209,-0.145985)\dpicstop
+\fill[fill=black,line width=0bp](2.588209,-0.145985)
+ --(2.604876,-0.117118)
+ --(2.633416,-0.172085)
+ --(2.571543,-0.174853)
+ --(2.588209,-0.145985)--cycle
+\dpicstop
+\dpicdraw (2.588209,-0.145985)
+ --(2.604876,-0.117118)
+ --(2.633416,-0.172085)
+ --(2.571543,-0.174853)
+ --(2.588209,-0.145985)\dpicstop
+\dpicdraw (2.619517,-0.207229)
+ --(2.656902,-0.142476)\dpicstop
+\dpicdraw (2.638209,-0.174853)
+ --(2.665171,-0.190419)\dpicstop
+\end{tikzpicture}%
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/ex06.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/ex06.m4
deleted file mode 100644
index 1fb6b1bd7bf..00000000000
--- a/Master/texmf-dist/doc/latex/circuit-macros/examples/ex06.m4
+++ /dev/null
@@ -1,55 +0,0 @@
-.PS
-# ex06.m4
-gen_init
-
-F: box invis wid 1.6i ht 1.8i
-E: box invis wid F.wid ht F.ht
-G: box invis wid 1i ht F.ht
-
- ell = F.ht-0.6i
- r = 0.3i
- offset = 8bp__
- hatch = 0.1i
- dhs = hatch * sqrt(2)
- qmell = F.ht - ell
- kwid = F.wid-qmell-r
-
- hatchbox(wid G.e.x-F.w.x ht F.ht,hatch) with .sw at F.sw
- box invis fill_(1) ht ell wid E.e.x-F.w.x with .nw at F.nw
-
- box wid G.e.x-F.w.x ht F.ht with .sw at F.sw thick linethick*3/2
- Loopover_(`B',
- `B`'T: B.se + (-qmell,qmell)
- line invis fill_(1) from B.se to (B.se,B`'T) then to B`'T then to B.se
- line from (B.w,B`'T) to B`'T chop 0 chop -offset
- line from B`'T up ell chop -offset chop 0
- line from B`'T + (-r,0) up ell
- line dashed from B`'T to B.se
- "\large $0$" at B`'T + (-r/2,ell/2)
- "\large $0$" at B`'T + (qmell/2,ell/2)
- "$t$" at (B`'T,B.n) + (-offset/2,offset)
- sprintf("$\overbrace{\phantom{\hbox to %gin{}}}^{\hbox{$k$}}$",kwid) \
- at B.nw + (kwid/2,0) above
- hatchbox(wid kwid ht ell,hatch,,90) with .nw at B.nw
- line from B.ne to B.se thick linethick*3/2
- ',F,E)
-
- line from (G.w,ET) right G.wid
- line from ET + (0,r) left ET.x-E.w.x
- hatchbox(wid r ht r,hatch,,0) with .se at ET
-
- "$q$" at F.sw + (-offset,offset/3)
- "$\ell$" at (F.w,FT) + (-offset,offset/3)
-
- "$n{+}p{+}m$" at G.ne + (0,offset)
-
- Loopover_(`B',`"\Large $B$" ht 0.2 with .n at B.s + (0,-offset/2)',F,E,G)
-
- # extra left brace to avoid a psfrag problem (bug?)
- sprintf(\
- "$\vphantom{\{}\left.\vrule height %gin depth0pt width0pt\right\}r$",r/2) \
- at ET + (offset,r/2)
-
-# Adjust the bounding box without using s_box:
- move from F.nw+(-12bp__,21bp__) to G.se+(20bp__,-15bp__)
-.PE
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/examples.pdf b/Master/texmf-dist/doc/latex/circuit-macros/examples/examples.pdf
index dd6c4137403..79573a2f5e3 100644
--- a/Master/texmf-dist/doc/latex/circuit-macros/examples/examples.pdf
+++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/examples.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/examples.tex b/Master/texmf-dist/doc/latex/circuit-macros/examples/examples.tex
index 110720cd6a6..7223652463f 100644
--- a/Master/texmf-dist/doc/latex/circuit-macros/examples/examples.tex
+++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/examples.tex
@@ -22,25 +22,36 @@
\hfill\break
This is a collection of diagrams the author has had occasion to produce
- using m4 circuit macros and others, and dpic or gpic. In some cases
- there are other or better m4 or pic constructs for producing the same
- drawings, but names of the actual source-files are shown for reference.
+ using m4 circuit macros and others, and dpic or gpic.
+
+ Some lists of elements from the manual Circuit\_macros.pdf are included.
+ However, producing diagrams starting from a list of elements is like
+ writing poetry starting from a list of words, so a variety of small and
+ medium circuits and other diagrams are included here in the expectation
+ that you might wish to adapt some of them to your purposes. In some
+ cases there are other or better m4 or pic constructs for producing
+ the same drawings, but names of the actual source-files are shown
+ for reference.
+
Some of the later examples test the boundaries of what can be done
when employing a ``little language'' like pic. Most of the examples
can be processed using either dpic~-p, dpic~-g, or, with exceptions,
gpic~-t, but the possibility of other postprocessing has meant that
sometimes the source is slightly more complicated than it would be if
only one workflow had been assumed. The most simplicity and elegance
- is achieved by sticking to one pic interpreter and one postprocessor.
+ are achieved by sticking to one pic interpreter and one postprocessor.
Color and other embellishments are not included in the standards
documents for circuit elements but examples of their use to call
attention to particular elements are included.
- This document duplicates a few diagrams from the manual
- Circuit\_macros.pdf. There are also a few files in the
- examples directory that are not included in this document. To process
- {\sl file}.m4, for example, type "make {\sl file}.pdf".
+ There are a few files in the examples directory that are not included
+ in this document. To produce .pdf from {\sl file}.m4, for example,
+ type ``make {\sl file}.pdf''.
+
+ Type ``make'' in the extras directory to see more.
\input files
+
+ Type ``make'' in the extras directory to see more.
\endinput
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/extras/Chuck.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/extras/Chuck.m4
index 3d85390e80b..b926988d810 100644
--- a/Master/texmf-dist/doc/latex/circuit-macros/examples/extras/Chuck.m4
+++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/extras/Chuck.m4
@@ -158,7 +158,7 @@ hidden_thick
line dashed from (-305/2,s*h) to (305/2,s*h)
line dashed from (-305/2,s*30.6) to (305/2,s*30.6)
line dashed from (-305/2,s*21.1) to (305/2,s*21.1)
- line dashed from (-305/2+25+2,s*21.1) to (305/2,s*21.1)
+# line dashed from (-305/2+25+2,s*21.1) to (305/2,s*21.1)
line dashed dashwid/2 from (-305/2+25,s*25/2) down -s*(40/2-25/2-2);
if s<0 then { arc dashed dashwid/4 ccw rad 2 } \
else { up; arc dashed dashwid/4 cw rad 2 }
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/extras/Shadow.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/extras/HSVS.m4
index 1ad65d8eb43..1ad65d8eb43 100644
--- a/Master/texmf-dist/doc/latex/circuit-macros/examples/extras/Shadow.m4
+++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/extras/HSVS.m4
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/extras/OpAmpFilter.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/extras/OpAmpFilter.m4
index 8e8f82c9801..b051ad1da01 100644
--- a/Master/texmf-dist/doc/latex/circuit-macros/examples/extras/OpAmpFilter.m4
+++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/extras/OpAmpFilter.m4
@@ -2,6 +2,7 @@
# OpAmpFilter.m4
cct_init
command "{\small\sf"
+linewid = linewid*0.9
define(`SpecOpAmp',`$1: [ right_
lwtmp = linewid; linewid = 1*scale
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/extras/Planes.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/extras/Planes.m4
index 9344bd2ddad..236642d93fa 100644
--- a/Master/texmf-dist/doc/latex/circuit-macros/examples/extras/Planes.m4
+++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/extras/Planes.m4
@@ -1,5 +1,6 @@
.PS
# Planes.m4
+# https://tex.stackexchange.com/questions/727666/gate-all-around-fet-gaafet-nanosheet-3d-illustration
threeD_init
NeedDpicTools
@@ -7,169 +8,209 @@ NeedDpicTools
# use normal vectors to determine visibility, sort and plot the visible
# facets from back to front.
-# Store a point as x_[i], y_[i], z_[i]
-define(`mktriple',`
- x_[$1] = $2
- y_[$1] = $3
- z_[$1] = $4')
+divert(-1)
+#####################################################################
# Recover point coordinates
define(`triple',`x_[$1], y_[$1], z_[$1]')
+# Store a point as x_[i], y_[i], z_[i]
+define(`mktriple',
+ `x_[$1] = $2
+ y_[$1] = $3
+ z_[$1] = $4 ')
+# Normal vector to stored facet
define(`facetnormal',`cross3D(
- diff3D(triple($1*3+1),triple($1*3)),
- diff3D(triple($1*3+2),triple($1*3+1)))')
+ diff3D(triple((`$1')*3+1),triple((`$1')*3)),
+ diff3D(triple((`$1')*3+2),triple((`$1')*3+1)))')
define(`facetcenter',`sprod3D(0.5,sum3D(triple($1*3),triple($1*3+2)))')
-# Create npositive, arrays dcosine[1..npositive]
-# and index ix[1..npositive] of sorted facets
-# Uses macros facetnormal(i) and facetcenter(i)
-define(`processfacets',`
- npositive = 0
- for i=1 to `$1' do {
- mktriple(0,facetnormal(i))
- dx = dot3D(triple(0),View3D)
- if dx > 0 then {
- dcosine[i] = dx/length3D(triple(0)) # direction cosine normal wrt View3D
- npositive +=1
- dist[npositive] = dot3D(facetcenter(i),View3D) # distance
- ix[npositive] = i
- }
- }
- dpquicksort(dist,1,npositive,ix) ')
+# Facets are rectangles; store NW, NE, SE corners
+# `mkpfacet(index,NW2D,NE2D,-d)'
+define(`mkpfacet',`
+ mktriple((`$1')*3, 0,`$2'.x,`$2'.y) # This uses a right-hand set of
+ mktriple((`$1')*3+1, 0,`$3'.x,`$3'.y) # coords with depth 1st value
+ mktriple((`$1')*3+2,`$4',`$3'.x,`$3'.y)
+ mktriple(0,facetnormal(`$1'))
+ if dot3D(triple(0),View3D) < 0 then {
+ mktriple((`$1')*3,`$4',`$3'.x,`$3'.y)
+ mktriple((`$1')*3+2, 0,`$2'.x,`$2'.y) }
+ ')
-ifelse(1,1,`
-Threeplanes: [
+# View angles azimuth, elevation, rotation (degrees),
+# Implicitly increments m4x
+define(`mkthreeplanes',`
+#mkthreeplanes( wd2h param, ht param, dpth param )
# Size parameters
- a = 3/2
- b = 0.4
- d = 1
+ define(`m4a',`ifelse(`$1',,1.5,(`$1'))')
+ define(`m4b',`ifelse(`$1',,0.4,(`$2'))')
+ define(`m4d',`ifelse(`$1',,0.5,(`$3'))')
# Define intersecting lines in the plane
- A0: -a,-b
- A1: a,-b
- B0: Rot_(A0,120)
- B1: Rot_(A1,120)
- C0: Rot_(A0,240)
- C1: Rot_(A1,240)
-
-# Intersections
-define(`lintersect',`intersect_(`$1'0,`$1'1,`$2'0,`$2'1)')
- AB: lintersect(A,B)
- BC: lintersect(B,C)
- CA: lintersect(C,A)
-
-# Facets are rectangles here; store 3 corners
-define(`mkfacet',`
- mktriple((`$1')*3, 0,`$2'.x,`$2'.y)
- mktriple((`$1')*3+1, 0,`$3'.x,`$3'.y)
- mktriple((`$1')*3+2,-d,`$3'.x,`$3'.y)
- ')
-# Define the facets
- mkfacet(m4inx,A0,CA) mkfacet(m4inx,CA,A0)
- mkfacet(m4inx,CA,AB) mkfacet(m4inx,AB,CA)
- mkfacet(m4inx,AB,A1) mkfacet(m4inx,A1,AB)
-
- mkfacet(m4inx,B0,AB) mkfacet(m4inx,AB,B0)
- mkfacet(m4inx,AB,BC) mkfacet(m4inx,BC,AB)
- mkfacet(m4inx,BC,B1) mkfacet(m4inx,B1,BC)
-
- mkfacet(m4inx,C0,BC) mkfacet(m4inx,BC,C0)
- mkfacet(m4inx,BC,CA) mkfacet(m4inx,CA,BC)
- mkfacet(m4inx,CA,C1) mkfacet(m4inx,C1,CA)
- nfacets = m4x
+ A0: -m4a,-m4b; A1: m4a,-m4b
+ B0: Rot_(A0,120); B1: Rot_(A1,120)
+ C0: Rot_(A0,240); C1: Rot_(A1,240)
+ AB: intersect_(A0,A1,B0,B1)
+ BC: intersect_(B0,B1,C0,C1)
+ CA: intersect_(C0,C1,A0,A1)
+# Define the 9 visible facets
+ mkpfacet(m4inx,A0,CA,-m4d)
+ mkpfacet(m4inx,CA,AB,-m4d)
+ mkpfacet(m4inx,AB,A1,-m4d)
+
+ mkpfacet(m4inx,B0,AB,-m4d)
+ mkpfacet(m4inx,AB,BC,-m4d)
+ mkpfacet(m4inx,BC,B1,-m4d)
+
+ mkpfacet(m4inx,C0,BC,-m4d)
+ mkpfacet(m4inx,BC,CA,-m4d)
+ mkpfacet(m4inx,CA,C1,-m4d)
+')
-# Wierd color
-define(`colr',`ifelse(`$1',,"white",
- `rgbstring(`$1',ifelse(`$2',,`$1',`$2'),ifelse(`$3',,`$1',`$3'))')')
+# Cuboid
+# Requires centre plus three lengths plus 3 angles or equivalent, e.g. 9 dof
+# plus, somehow, color information. Implicitly increments m4cux
+#
+define(`mkcuboid',`# ( xC,yC,zC, wdh,hgt,depth, xrot,yrot,zrot)
+ pushdef(`m4cubx',`define(`m4cux',ifdef(`m4cux',`incr(m4cux)',1))m4cux')
+ pushdef(`xr',`$7') pushdef(`yr',`$8') pushdef(`zr',`$9') dnl
+ pushdef(`wd2',ifelse(`$4',,boxwd,(`$4'))/2) dnl
+ pushdef(`hg2',ifelse(`$5',,boxht,(`$5'))/2) dnl
+ pushdef(`de2',ifelse(`$6',,boxwd,(`$6'))/2) dnl
+ pushdef(`dx',`ifelse(`$1',,0,`$1')') pushdef(`dy',`ifelse(`$2',,0,`$2')') dnl
+ pushdef(`dz',`ifelse(`$3',,0,`$3')') dnl
+ ixc = m4cubx # Front:
+ placecorner(ixc*3,de2,wd2,-hg2) # FSE
+ placecorner(ixc*3+1,de2,wd2,hg2) # FNE
+ placecorner(ixc*3+2,de2,-wd2,hg2) # FNW
+ mktriple(0,facetnormal(ixc))
+ if dot3D(triple(0),View3D) < 0 then {
+ placecorner(ixc*3,-de2,-wd2,-hg2) # FSE
+ placecorner(ixc*3+1,-de2,-wd2,hg2) # FNE
+ placecorner(ixc*3+2,-de2,wd2,hg2)} # FNW
+ ixc = m4cubx # Right:
+ placecorner(ixc*3,-de2,wd2,-hg2) # RSE
+ placecorner(ixc*3+1,-de2,wd2,hg2) # RNE
+ placecorner(ixc*3+2,de2,wd2,hg2) # RNW
+ mktriple(0,facetnormal(ixc))
+ if dot3D(triple(0),View3D) < 0 then {
+ placecorner(ixc*3,de2,-wd2,-hg2) # LSE
+ placecorner(ixc*3+1,de2,-wd2,hg2) # LNE
+ placecorner(ixc*3+2,-de2,-wd2,hg2)}# LNW
+ ixc = m4cubx # Top:
+ placecorner(ixc*3,de2,wd2,hg2) # TSE
+ placecorner(ixc*3+1,-de2,wd2,hg2) # TNE
+ placecorner(ixc*3+2,-de2,-wd2,hg2) # TNW
+ mktriple(0,facetnormal(ixc))
+ if dot3D(triple(0),View3D) < 0 then {
+ placecorner(ixc*3,-de2,wd2,-hg2) # USE U=underside
+ placecorner(ixc*3+1,de2,wd2,-hg2) # UNE
+ placecorner(ixc*3+2,de2,-wd2,-hg2)}# UNW
+ popdef(`m4cubx',`xr',`yr',`zr',`wd2',`hg2',`de2',`dx',`dy',`dz')
+')
+define(`rots',`rot3Dz(ifelse(zr,,0,(zr)*dtor_),rot3Dy(ifelse(yr,,0,(yr)*dtor_),
+ rot3Dx(ifelse(xr,,0,(xr)*dtor_),`$1',`$2',`$3')))')
+define(`placecorner',`mktriple(`$1',sum3D(dx,dy,dz,rots(`$2',`$3',`$4')))')
-# Recover the 4th corner and draw
+# Recover the 4th (SW) corner and draw
+# `drawfacet(index,r,g,b)'
+# `drawfacet(index,line attributes)'
define(`drawfacet',`
- NW_facet: project(triple(($1)*3))
- NE_facet: project(triple(($1)*3+1))
- SE_facet: project(triple(($1)*3+2))
- SW_facet: project(x_[($1)*3+2],y_[($1)*3],z_[($1)*3])
- N_facet: 0.5 between NW_facet and NE_facet
- line from N_facet to NE_facet then to SE_facet then to SW_facet \
- then to NW_facet then to N_facet shaded colr(`$2',`$3',`$4')
-# fill_(ifelse(`$2',,1,`(1-`$2')'))
+dnl print "`$0'($@)"
+ SE[`$1']: project(triple((`$1')*3))
+ NE[`$1']: project(triple((`$1')*3+1))
+ NW[`$1']: project(triple((`$1')*3+2))
+ SW[`$1']: NW[`$1']+SE[`$1']-NE[`$1']
+ N[`$1']: 0.5 between NW[`$1'] and NE[`$1']
+ C[`$1']: 0.5 between NW[`$1'] and SE[`$1']
+ Line[`$1']: line from N[`$1'] to NE[`$1'] then to SE[`$1'] \
+ then to SW[`$1'] then to NW[`$1'] then to N[`$1'] invis `$2'
')
-# View angles azimuth, elevation, rotation (degrees)
- setview( 10, 40 )
-
-# Draw facets, shading with view cosines
- processfacets(nfacets)
- for i=1 to npositive do { drawfacet(ix[i],max(0,1-2*dcosine[ix[i]]),
- dcosine[ix[i]],
- dcosine[ix[i]])
-# for i=1 to npositive do { drawfacet(ix[i],dcosine[ix[i]])
- }
-
-] # Threeplanes
-')
-
-# Bowl
-# vertx_(facet_no,vertex_no)
- define vertx_ { ($1-1)*nvertices + $2 }
-
-# Normal vector to a facet
-define(`facetnormal',`cross3D(
- diff3D(triple(vertx_($1,2)),triple(vertx_($1,1))),
- diff3D(triple(vertx_($1,4)),triple(vertx_($1,1))))')
-
-# Facet center
-define(`facetcenter',`sprod3D(1/4,sum3D(
- sum3D(triple(vertx_(`$1',1)),triple(vertx_(`$1',2))),
- sum3D(triple(vertx_(`$1',3)),triple(vertx_(`$1',4)))))')
-
-define(`drawplane',`
- NW_plane: project(triple(vertx_($1,1)))
- SW_plane: project(triple(vertx_($1,2)))
- SE_plane: project(triple(vertx_($1,3)))
- NE_plane: project(triple(vertx_($1,4)))
- N_plane: 0.5 between NW_plane and NE_plane
- shd = (`$2')^(1/4)
- line from N_plane to NE_plane then to SE_plane then to SW_plane \
- then to NW_plane then to N_plane \
- fill_(ifelse(`$2',,1,shd)) outlined rgbstring(shd,shd,shd)
-# line from NW_plane to NE_plane
- line from SW_plane to SE_plane
- ')
+# Shortcut `processfacets(nfacets)'
+define(`processfacets',
+ `indexfacets(`$1',nvisible)
+ drawfacets(nvisible) ')
-ifelse(1,1,`
- nvertices = 4 # vertices per facet
-Bowl: [
- elevation = 30
- setview( 0, 30 )
- nplanes = 40
- bigradius = 2
- smallradius = 1
- cupht = 1.5
- thin = smallradius/10
-# Define the facet corners
- for i=1 to nplanes do {
- mktriple(vertx_(i,1),rot3Dz((i-1)/nplanes*twopi_,bigradius,0,0))
- mktriple(vertx_(i,2),rot3Dz((i-1)/nplanes*twopi_,smallradius,0,-cupht))
- mktriple(vertx_(i,3),rot3Dz((i )/nplanes*twopi_,smallradius,0,-cupht))
- mktriple(vertx_(i,4),rot3Dz((i )/nplanes*twopi_,bigradius,0,0))
- mktriple(vertx_(nplanes+i,1),triple(vertx_(i,4)))
- mktriple(vertx_(nplanes+i,2),triple(vertx_(i,3)))
- mktriple(vertx_(nplanes+i,3),triple(vertx_(i,2)))
- mktriple(vertx_(nplanes+i,4),triple(vertx_(i,1)))
+# Create nvisible, arrays dircos[1..nvisible],
+# dist[1..nvisible], and index
+# sorted[1..nvisible] of facets; then sort.
+# Uses macros facetnormal(i) and facetcenter(i)
+define(`indexfacets',`nvis = 0
+ for i=1 to `$1' do {
+ mktriple(0,facetnormal(i))
+ dx = dot3D(triple(0),View3D)
+ if dx > 0 then { nvis +=1
+ dircos[nvis] = abs(dx/length3D(triple(0))) # dir cosine normal wrt View3D
+ dist[nvis] = dot3D(facetcenter(i),View3D) # distance along View3D
+ sorted[nvis] = i }
+ }; `$2' = nvis
+ if nvis > 1 then { dpquicksort(dist,1,nvis,sorted) } ')
+
+# Compute posefactor and color, then draw.
+define(`drawfacets',
+ `for i=1 to `$1' do {
+ posefactor=sqrt(dircos[i]*i/(`$1'))
+ ifdef(`facetcolor', facetcolor,
+ mktriple(1,(2+posefactor)/3,(2+posefactor)/3,(2+posefactor)/3) )
+ drawfacet(sorted[i],shaded rgbstring(triple(1)))
}
-# for i=1 to nplanes do {
-# mktriple(vertx_(i,1),rot3Dz((i-1)/nplanes*twopi_,bigradius,0,0))
-# mktriple(vertx_(i,2),rot3Dz((i-1)/nplanes*twopi_,smallradius,0,-cupht))
-# mktriple(vertx_(i,3),rot3Dz((i-1)/nplanes*twopi_,smallradius-thin,0,-cupht))
-# mktriple(vertx_(i,4),rot3Dz((i-1)/nplanes*twopi_,bigradius-thin,0,0))
-# }
-# Find the visible facets and sort
- processfacets(nplanes*2)
-
- for i=1 to npositive do { drawplane(ix[i],dcosine[ix[i]]) }
- ellipse wid 2*bigradius ht 2*bigradius*sin(elevation*dtor_) at project(0,0,0)
-
-] #with .sw at Threeplanes.se
-')
+ ifdef(`facetcolor',`popdef(`facetcolor')')
+ ')
+#####################################################################
+divert(0)dnl
+
+# Threeplanes
+[
+ setview( 10, 40 )
+ define(`m4x',0)
+ mkthreeplanes(3/2,0.4,1); nfacets = m4x
+ pushdef(`facetcolor',`mktriple(1,max(0,1-2*dircos[sorted[i]]),
+ dircos[sorted[i]],dircos[sorted[i]])')
+ processfacets(nfacets)
+ ]
+
+ define setfacetcolor { dnl This reduces color saturation depending on pose
+ mktriple(1,
+ (2*($1)+posefactor)/3,(2*($2)+posefactor)/3,(2*($3)+posefactor)/3) }
+
+# Transistor
+[
+ hsvtorgb(220,0.75,1, r1,g1,b1) # blueish
+ hsvtorgb(60,0.75,1, r2,g2,b2) # greenish
+ setview(-40, 20 )
+ skale = 1/2
+ footw = 5*skale
+ footh = 0.5*skale
+ footd = 3.5*skale
+ cstripd = footd*0.3
+ bludp = (footd-cstripd)/2
+ twd = cstripd
+ srch = 0.35*skale
+ twh = 7.5*srch
+ define(`footcolor',`0.45,0.45,0.45')
+ define(`m4cux',0)
+# ( xC,yC,zC, wd2h,hg2t,depth, xrot,yrot,zrot)
+ mkcuboid(0,0,footh/2,footw,footh,footd)
+ mkcuboid(0,0,footh+bludp/2,footw,bludp,cstripd)
+ mkcuboid( footd/2-bludp/2,0,footh+bludp/2,footw,bludp,bludp)
+ mkcuboid(-footd/2+bludp/2,0,footh+bludp/2,footw,bludp,bludp)
+ mkcuboid(0,0,footh+bludp+twh/2,twd,twh,footd)
+ shelfw = (footw-twd)/2
+ for_(0,2,1,
+ `mkcuboid(0,-footw/2+shelfw/2,footh+bludp+srch*(3/2+2*m4x),
+ shelfw,srch,cstripd)
+ mkcuboid(0, footw/2-shelfw/2,footh+bludp+srch*(3/2+2*m4x),
+ shelfw,srch,cstripd) ')
+ nfacets = m4cux
+ pushdef(`facetcolor',
+ `if sorted[i]<=6 then { setfacetcolor(footcolor) } \# first two blocks
+ else { if sorted[i] <=12 then { setfacetcolor(r1,g1,b1) } \# blue blocks
+ else { if sorted[i] <=15 then {setfacetcolor(r2,g2,b2) } \
+ else { setfacetcolor(footcolor) }}}')
+ indexfacets(nfacets,nvisible) # Tweak the sort:
+ t = sorted[17]; sorted[17] = sorted[18]; sorted[18] = t
+ t = sorted[10]; sorted[10] = sorted[6]; sorted[6] = t
+ drawfacets(nvisible)
+ ] with .sw at last [].se+(0.2,0)
.PE
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/extras/README_extras b/Master/texmf-dist/doc/latex/circuit-macros/examples/extras/README_extras
index ebef7cfcd14..001f8f5002c 100644
--- a/Master/texmf-dist/doc/latex/circuit-macros/examples/extras/README_extras
+++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/extras/README_extras
@@ -6,7 +6,7 @@ tikz?" Producing drawings like these can be satisfying, as shown by the
alacrity with which knowledgable people assist when questions are asked.
The questions often have more to do with geometry than drawing language,
and the examples here using m4 with dpic confirm that the coding can
-often be done reasonably in several possible languages.
+be done efficiently in more than one possible language.
This directory is assumed to be a subdirectory of the examples directory
in order to include the necessary definition files.
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/ex02.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/extras/ex02.m4
index 2265c1e3170..2265c1e3170 100644
--- a/Master/texmf-dist/doc/latex/circuit-macros/examples/ex02.m4
+++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/extras/ex02.m4
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/files.tex b/Master/texmf-dist/doc/latex/circuit-macros/examples/files.tex
index 45000c231b6..2dbfa7e5042 100644
--- a/Master/texmf-dist/doc/latex/circuit-macros/examples/files.tex
+++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/files.tex
@@ -80,6 +80,12 @@
}
\bfig{
+ \centerline{\getpic{Antennas}}
+ \caption{Antenna symbols
+ \src{Antennas.m4}.}
+ }
+
+\bfig{
\centerline{\getpic{Switches}}
\caption{The switch macros; {\tt switch(,,,L|B|D)} is a wrapper
for {\tt lswitch}, {\tt bswitch}, and {\tt dswitch}
@@ -87,12 +93,6 @@
}
\bfig{
- \centerline{\getpic{Antennas}}
- \caption{Antenna symbols
- \src{Antennas.m4}.}
- }
-
-\bfig{
{\small\centerline{\getpic{Opamp}} }
\caption{The opamp
\src{Opamp.m4}.}
@@ -161,7 +161,7 @@
\ifmpost\else\bfig{
\centerline{\getpic{cbresistor}}
\caption{Color-coded through-hole resistors. All are
- 10 percent tolerance except for the last,
+ 10 percent tolerance except the last,
which illustrates 5 percent
\src{cbresistor.m4}.}
}\fi
@@ -248,12 +248,6 @@
}
\bfig{
- \centerline{\getpic{ex02}}
- \caption{Elements at obtuse angles
- \src{ex02.m4}.}
- }
-
-\bfig{
{\small\centerline{\getpic{Optoiso}} }
\caption{Optical isolator: a circuit with right or left orientation
\src{Optoiso.m4}.}
@@ -350,12 +344,24 @@
}
\bfig{
+ \centerline{\getpic{LT3724}}
+ \caption{IC controller and auxiliary elements of a step-down converter
+ \src{LT3524.m4}.}
+ }
+
+\bfig{
\centerline{\getpic{ex04}}
\caption{Labels on non-manhattan elements
\src{ex04.m4}.}
}
\bfig{
+ \centerline{\getpic{Drive}}
+ \caption{Synchronous machine driven by variable-speed drive and rectifier
+ \src{Drive.m4}.}
+ }
+
+\bfig{
\centerline{\getpic{Csource}}
\caption{Realization of a controlled source
(illustrating stacked element labels)
@@ -363,12 +369,6 @@
}
\bfig{
- \centerline{\getpic{Drive}}
- \caption{Synchronous machine driven by variable-speed drive and rectifier
- \src{Drive.m4}.}
- }
-
-\bfig{
\centerline{\getpic{ex16}}
\caption{A rate $1/2$ binary convolutional coder and its state diagram
\src{ex16.m4}.}
@@ -387,9 +387,9 @@
}
\bfig{
- \centerline{\getpic{Rectifiers}}
- \caption{Rectifier circuits and waveforms
- \src{Rectifiers.m4}.}
+ \centerline{\getpic{OneLine}}
+ \caption{Single line distribution diagram
+ \src{OneLine.m4}.}
}
\begin{sidewaysfigure} %\rotatebox{90}{% \begin{landscape} %ignore%
@@ -568,14 +568,15 @@
\caption{Embellishments: the top row illustrates
{\tt shadowed(box|circle|ellipse|line,[at {\sl position}],{\sl keys})}
and the second row
- {\tt ColoredV(box|circle|ellipse,({\sl r,g,b})|(({\sl colorseq})),{\sl attributes})}
+ {\tt ColoredV(box|circle|ellipse,({\sl r,g,b})|(({\sl colorseq})),
+ {\sl attributes})}
\src{Shadowed.m4}.}
}\fi\fi
\bfig{
- \centerline{\getpic{ex06}}
- \caption{Crosshatching
- \src{ex06.m4}.}
+ \centerline{\getpic{Loglog}}
+ \caption{A graph and crosshatching example drawn using the pic language
+ \src{Loglog.m4}.}
}
\bfig{
@@ -584,12 +585,6 @@
\src{Geometry.m4}.}
}
-\bfig{
- \centerline{\getpic{Loglog}}
- \caption{A graph drawn using the pic language
- \src{Loglog.m4}.}
- }
-
\ifmpost\else\ifpostscript\else\bfig{
\centerline{\getpic{Smithchart}}
\caption{A Smith chart
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/ics.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/ics.m4
index 5db6a17cea2..4212f00bd19 100644
--- a/Master/texmf-dist/doc/latex/circuit-macros/examples/ics.m4
+++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/ics.m4
@@ -1,6 +1,6 @@
divert(-1)
- Macros defining some integrated circuits and connectors for LaTeX
+ `Macros defining some integrated circuits and connectors for LaTeX'
`A sequence of pins along the east or west side of a chip:
lg_pinseq(initial pin no, final pin no,
@@ -121,16 +121,16 @@ define(`ArduinoUno',`[
#
Connector: box wid m4bwid ht m4bht
#
- plen = ifelse(`$4',,`2*L_unit',`$4')
+ m4pl = ifelse(`$3',,`2*L_unit',`$3')
#
foreach_(`x',`ifelse(x,nul,,
- `Pin`'eval(5+m4Lx): line left_ plen from Connector.nw-(0,(5+m4Lx)*lg_pinsep)
+ `Pin`'eval(5+m4Lx): line left_ m4pl from Connector.nw-(0,(5+m4Lx)*lg_pinsep)
{ "x" ljust at last line.start }')',
IOREF, RESET,$+${3}V3,$+${5}V, GND, GND, VIN,
nul, A0, A1, A2, A3, A4, A5)
#
foreach_(`x',`ifelse(x,nul,,
- `Pin`'eval(22-m4Lx): line right_ plen from Connector.ne-(0,m4Lx*lg_pinsep)
+ `Pin`'eval(22-m4Lx): line right_ m4pl from Connector.ne-(0,m4Lx*lg_pinsep)
{ "x" rjust at last line.start }')',
SCL, SDA, AREF, GND, D13, D12, ic_tilde`'D11, ic_tilde`'D10, ic_tilde`'D9, D8,
nul, D7, ic_tilde`'D6, ic_tilde`'D5, D4, ic_tilde`'D3, D2, TX D1, RX D0)
@@ -144,16 +144,16 @@ define(`ArduinoLeonardo',`[
#
Connector: box wid m4bwid ht m4bht
#
- plen = ifelse(`$4',,`2*L_unit',`$4')
+ m4pl = ifelse(`$3',,`2*L_unit',`$3')
#
foreach_(`x',`ifelse(x,nul,,
- `Pin`'eval(5+m4Lx): line left_ plen from Connector.nw-(0,(5+m4Lx)*lg_pinsep)
+ `Pin`'eval(5+m4Lx): line left_ m4pl from Connector.nw-(0,(5+m4Lx)*lg_pinsep)
{ "x" ljust at last line.start }')',
IOREF, RESET,$+${3}V3,$+${5}V, GND, GND, VIN,
nul, A0, A1, A2, A3, A4, A5)
#
foreach_(`x',`ifelse(x,nul,,
- `Pin`'eval(22-m4Lx): line right_ plen from Connector.ne-(0,m4Lx*lg_pinsep)
+ `Pin`'eval(22-m4Lx): line right_ m4pl from Connector.ne-(0,m4Lx*lg_pinsep)
{ "x" rjust at last line.start }')',
SCL, SDA, AREF, GND,
ic_tilde`'D13, D12, ic_tilde`'D11, ic_tilde`'D10, ic_tilde`'D9, D8,
@@ -167,10 +167,10 @@ define(`RPi',`[
define(`m4bht',`ifelse(`$2',,`21*lg_pinsep',`$2')')dnl
#
GPIO: box wid m4bwid ht m4bht
- plen = ifelse(`$4',,`6*L_unit',`$4')
+ m4pl = ifelse(`$3',,`6*L_unit',`$3')
#
define A_LeftGPIO { dnl pin downcount, internal label , pin no above line
- exec sprintf("Pin%g: line left_ plen from GPIO.nw-(0,%g)",\
+ exec sprintf("Pin%g: line left_ m4pl from GPIO.nw-(0,%g)",\
2*(`$'1)-1,(`$'1)*lg_pinsep)
{ "`$'3" ljust at last line.start }
"`$'2" at last line.c above }
@@ -188,7 +188,7 @@ foreach_(`x',`ifelse(x,nul,,`A_LeftGPIO(m4Lx,patsubst(x,;,`,'))')',
;GND )
#
define A_RightGPIO { dnl pin downcount, internal label , pin no above line
- exec sprintf("Pin%g: line right_ plen from GPIO.ne-(0,%g)",\
+ exec sprintf("Pin%g: line right_ m4pl from GPIO.ne-(0,%g)",\
2*(`$'1),(`$'1)*lg_pinsep)
{ "`$'3" rjust at last line.start }
"`$'2" at last line.c above }
@@ -216,17 +216,17 @@ define(`USB_C_Socket',`[
define(`m4bht',`ifelse(`$2',,`14*lg_pinsep',`$2')')dnl
#
Base: box wid m4bwid ht m4bht rad 5/3*lg_pinsep
- plen = ifelse(`$4',,`6*L_unit',`$4')
+ m4pl = ifelse(`$3',,`6*L_unit',`$3')
#
foreach_(`x',
`B`'eval(13-m4Lx): dnl
- line left_ plen from Base.n-(m4bwid/2,(m4Lx+0.5)*lg_pinsep)
+ line left_ m4pl from Base.n-(m4bwid/2,(m4Lx+0.5)*lg_pinsep)
{"x" ljust at last line.start}',
GND, RX1`$+$', RX1`$-$', VBUS, SBU2, D`$-$', D`$+$', CC2, VBUS, TX2`$-$',
TX2`$+$', GND)
#
foreach_(`x',
- `A`'m4Lx: line right_ plen from Base.n+(m4bwid/2,-(m4Lx+0.5)*lg_pinsep)
+ `A`'m4Lx: line right_ m4pl from Base.n+(m4bwid/2,-(m4Lx+0.5)*lg_pinsep)
{"x" rjust at last line.start}',
GND, TX1`$+$', TX1`$-$', VBUS, CC1, D`$+$', D`$-$', SBU1, VBUS, RX2`$-$',
RX2`$+$', GND)
@@ -242,25 +242,25 @@ define(`HDMI_micro',`[
then right m4bwid/3 down m4bwid/3 \
then down m4bht-2*m4bwid/3 then down m4bwid/3 left m4bwid/3 \
then left m4bwid*2/3 then to Here]
- plen = ifelse(`$4',,`6*L_unit',`$4')
+ m4pl = ifelse(`$3',,`6*L_unit',`$3')
#
foreach_(`x',
- `Pin`'m4Lx: line left_ plen from Base.nw-(0,m4bwid/3+m4Lx*lg_pinsep)
+ `Pin`'m4Lx: line left_ m4pl from Base.nw-(0,m4bwid/3+m4Lx*lg_pinsep)
{"x" ljust at last line.start}
"m4Lx" at last line.c above',
HPD, UTILITY, D2`$+$', D2\_SH, D2`$-$', D1`$+$', D1\_SH, D1`$-$',
D0`$+$', D0\_SH, D0`$-$', CLK`$+$', CLK\_SH, CLK`$-$',
CEC, GND, SCL, SDA,$+${5}V)
- line from Base.nw+(m4bwid*2/3-lg_pinsep,0) up plen
+ line from Base.nw+(m4bwid*2/3-lg_pinsep,0) up m4pl
r_text(,21,at last line.c+(-5bp__,0))
r_text(,SH2,at last line.start + (0,-10bp__))
- line from Base.nw+(m4bwid*2/3-2*lg_pinsep,0) up plen
+ line from Base.nw+(m4bwid*2/3-2*lg_pinsep,0) up m4pl
r_text(,20,at last line.c+(-5bp__,0))
r_text(,SH1,at last line.start + (0,-10bp__))
- line from Base.sw+(m4bwid*2/3-lg_pinsep,0) down plen
+ line from Base.sw+(m4bwid*2/3-lg_pinsep,0) down m4pl
r_text(,23,at last line.c+(-5bp__,0))
r_text(,SH4,at last line.start + (0, 10bp__))
- line from Base.sw+(m4bwid*2/3-2*lg_pinsep,0) down plen
+ line from Base.sw+(m4bwid*2/3-2*lg_pinsep,0) down m4pl
r_text(,22,at last line.c+(-5bp__,0))
r_text(,SH3,at last line.start + (0, 10bp__))
#
@@ -312,5 +312,59 @@ define(`DIP',`[ pinct= ifelse(`$1',,8,`$1')
`$3'; resetdir_
popdef(`m4bodywid',`m4bodylen',`m4pinpitch',`m4pinwid',`m4pinlen',`m4direct',
`m4type') ]'))
+ `There is more than one way to draw an IC and
+ label its pins; here is one:'
+ `LT3724( keys ) IC in a [] block
+ keys: pinsep=expr; (0.25)
+ pincount=expr; (8 per side)
+ hght=expr; ((pincount+1)*pinsep)
+ wdth=expr; (0.6*hght)'
+ `8 pins per side; pin labels
+ VIN, SHDN, CSS, BURST_EN, VFB, VC, SYNC, FSET,
+ SGND, SENSEM, SENSEP, PGND, VCC, SW, TG, BOOST'
+define(`LT3724',`[ pushkeys_(`$1',`pinsep:0.25; pincount:8;
+ hght:(m4`'m4pincount+1)*m4`'pinsep; wdth:0.6*m4`'hght')dnl
+ Chip: box wid wdth ht hght shaded rgbstring(.94,.68,.76) "`LT3724'"
+ foreach_(`m4hx',`ifelse(m4hx,nil,,
+ `patsubst(m4hx,^[^:]*:): Chip.nw-(0,m4Lx*hght/(m4pincount+1))
+ "patsubst(m4hx,:.*)" ljust at Chip.nw-(0,m4Lx*hght/(m4pincount+1))')',
+ V$_{\hbox{\tiny IN}}$:VIN, SHDN, C$_{\hbox{\tiny SS}}$:CSS,
+ BURST\_EN:BURST_EN, V$_{\hbox{\tiny FB}}$:VFB, V$_{\hbox{\tiny C}}$:VC, SYNC,
+ f$_{\hbox{\tiny SET}}$:FSET)
+ line right_ 23bp__ from SHDN+(textoffset,textht/2+4bp__)
+ foreach_(`m4hx',`ifelse(m4hx,nil,,
+ `patsubst(m4hx,^[^:]*:): Chip.se+(0,m4Lx*hght/(m4pincount+1))
+ "patsubst(m4hx,:.*)" rjust at Chip.se+(0,m4Lx*hght/(m4pincount+1))')',
+ SGND, SENSE$^-$:SENSEM, SENSE$^+$:SENSEP, PGND,
+ V$_{\hbox{\tiny CC}}$:VCC, SW, TG, BOOST)
+ `$2' popdef(`m4pinsep',`m4pincount',`m4hght',`m4wdth') ]')
+
+
+ `Here is another way to draw an IC and
+ label its pins:'
+ `LT3757( keys ) IC in a [] block
+ keys: pinsep=expr; (0.25)
+ pincount=expr; (8 per side)
+ hght=expr; ((pincount+1)*pinsep)
+ wdth=expr; (0.6*hght)'
+ `8 pins per side; pin labels
+ top: VIN; left: SHU, SYNC, RT, SS;
+ right: GATE, SENSE, FBX;
+ bottom: VC, GND, INTVCC'
+define(`LT3757',`[ pushkeys_(`$1',`pinsep:0.25; pincount:8;
+ hght:(m4`'pincount+1)*m4`'pinsep; wdth:0.6*m4`'hght')dnl
+ Chip: box wid wdth ht hght shaded rgbstring(0.65,0.52,0.325) "`LT3757'" above
+ VIN: Chip.n; "$V_{\hbox{\tiny IN}}$" at VIN below
+ foreach_(`LL',`m43757label(nw,sw,ljust, m4pincount, patsubst(LL,:,`,'))',
+ SHU:2:"SHDN/UVLO", SYNC:5, RT:7, SS:8)
+ line right_ 21bp__ from SHU+(textoffset,4bp__)
+ foreach_(`LL',`m43757label(se,ne,rjust, m4pincount,
+ patsubst(LL,:,`,'))', FBX:1, SENSE:3, GATE:5)
+ foreach_(`LL',`m43757label(sw,se,+(0,textht/3) above, m4pincount,
+ patsubst(LL,:,`,'))',
+ VC:1.5:"V$_{\hbox{\tiny C}}$", GND:5, INTVCC:7.5:"INTV$_{\hbox{\tiny CC}}$")
+ `$2' popdef(`m4pinsep',`m4pincount',`m4hght',`m4wdth') ]')
+define(`m43757label',``$5': `$6'/(`$4'+1) between Chip.`$1' and Chip.`$2'
+ ifelse(`$7',,"`$5'",`$7') at `$5' `$3'')
divert(0)dnl
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/mf/cct.mf b/Master/texmf-dist/doc/latex/circuit-macros/examples/mf/cct.mf
index 37b64057d3f..b06f64bca0d 100644
--- a/Master/texmf-dist/doc/latex/circuit-macros/examples/mf/cct.mf
+++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/mf/cct.mf
@@ -1,5 +1,5 @@
% cct.mf, generated by Mfpic, v1.10 2012/12/03,
-% from TeX source "font" on 2024/05/30 at 10:30
+% from TeX source "font" on 2024/11/29 at 11:42
numeric mfpicversion; mfpicversion := 110;
if unknown mode: mode := localfont; fi
if unknown mag: mag := 1000/1000; fi
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/shapes.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/shapes.m4
index f50b0292309..90f0a4e286b 100644
--- a/Master/texmf-dist/doc/latex/circuit-macros/examples/shapes.m4
+++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/shapes.m4
@@ -1,163 +1,9 @@
.PS
# shapes.m4
threeD_init
+include(Shapedefs.m4)
divert(-1)
-# shapes.m4
-# 3D structures with complex surfaces and hidden lines are the domain of more
-# sophisticated software packages, but basic shapes can be drawn with pic.
-
-#####################################################
-
- `cylinder3D(xdispl,ydispl,zdispl,diameter,
- [colored "color"])'
-define(`cylinder3D',`[ Start: (0,0)
- xdispl = `$1'; ydispl = `$2'; zdispl = `$3'
- define(`M4CL',`xdispl,ydispl,zdispl')dnl
- lenc = length3D(M4CL)
- diamc = ifelse(`$4',,(lenc/2),`$4') ; radc = diamc/2
- cs = dot3D(View3D,M4CL)/lenc
- End: (Project(M4CL))
- az = atan2(ydispl,xdispl)
- ae = atan2(zdispl,sqrt(xdispl^2+ydispl^2))
- CL: line invis from Start to End; C: CL.c
- nls = int(twopi_*radc/lthick)
- define(`M4PP',`rot3Dz(az,rot3Dy(-ae,rot3Dx(-i/nls*twopi_,0,0,radc)))')dnl
- for i=0 to nls-1 do { if dot3D(View3D,M4PP) > 0 then {
- P: (Project(M4PP))
- ql = sqrta(dot3D(Light3D,M4PP)/radc)
- line from P to End+P outlined rgbstring(ql,ql,ql) `$5' } }
- Perp: (vperp(CL,radc))
- if cs > 0 then { T: End; B: Start } else { T: Start; B: End }
- rpoint_(from Start to Perp)
- css = sqrta(cs)
- Top: rotellipse(diamc,diamc*cs,
- thick linethick/3 shaded rgbstring(css,css,css)) with .c at T
- W: line thick linethick/3 from T+Perp to B+Perp
- Bot: ellipsearc(diamc,diamc*cs,pi_,twopi_,rp_ang,cw,
- thick linethick/3) with .C at B
- E: line thick linethick/3 from B-Perp to T-Perp
- rpoint_(from Start to End)
-`$6']')
-
- `cone3D(xdispl,ydispl,zdispl,diameter,
- [colored "color"])'
- `internal positions:
- Start (centre of base),
- End (point),
- C (axis centre)'
-define(`cone3D',`[ Start: (0,0)
- xdispl = `$1'; ydispl = `$2'; zdispl = `$3'
- define(`M4CL',`xdispl,ydispl,zdispl')dnl
- lenc = length3D(M4CL)
- diamc = ifelse(`$4',,(lenc/2),`$4') ; radc = diamc/2
- End: (Project(M4CL))
- cs = dot3D(View3D,M4CL)/lenc
- az = atan2(ydispl,xdispl)
- ae = atan2(zdispl,sqrt(xdispl^2+ydispl^2))
- CL: line invis from Start to End; C: CL.c
- nls = int(twopi_*radc/lthick)
- lt = sqrt(radc^2+lenc^2)
- b = 0
- for i=0 to nls-1 do { if dot3D(View3D,
- rot3Dz(az,rot3Dy(-ae,rot3Dx(-i/nls*twopi_,radc,0,lenc)))) > 0 then {
- ql = sqrta(dot3D(Light3D,
- rot3Dz(az,rot3Dy(-ae,rot3Dx(-i/nls*twopi_,radc,0,lenc))))/lt)
- P: (Project(rot3Dz(az,rot3Dy(-ae,rot3Dx(-i/nls*twopi_,0,0,radc)))))
- line from P to End outlined rgbstring(ql,ql,ql) `$5'
- if !b then { WB: P; b = 1 }
- } else { if b then { BW: P; b = 0 } } }
- if vlength(CL.x,CL.y) != 0 then { Perp: (vperp(CL,radc,R)) } \
- else { Perp: (radc,0) }
- if cs >= 0 then { T: End; B: Start } else {T: Start; B: End }
- rpoint_(from Start to Perp)
- pout = (vlength(End.x,End.y) > abs(radc*cs))
- if cs < 0 then { css = sqrta(cs)
- if pout then { line thick linethick/3 from BW to End then to WB }
- Bot: rotellipse(diamc,diamc*cs,thick linethick/3 \
- ifelse(`$5',,`shaded rgbstring(css,css,css)',`$5')) with .c at T } \
- else { if pout then {
- line thick linethick/3 from BW to End then to WB
- a = acos((WB.x*Perp.x+WB.y*Perp.y)/radc^2)
- Bot: ellipsearc(diamc,diamc*cs,a,pi_-a,rp_ang,cw, thick linethick/3) \
- with .C at B } \
- else {
- Bot: rotellipse(diamc,diamc*cs,thick linethick/3) with .c at B } }
- rpoint_(from Start to End)
-`$6']')
- `Arrow3D(xdispl,ydispl,zdispl,
- diam,arrowwid,arrowht)'
-define(`Arrow3D',`[ diam_Ar = ifelse(`$4',,linewid/10,`$4')
- wid_Ar = ifelse(`$5',,diam_Ar*2,`$5')
- ht_Ar = ifelse(`$6',,wid_Ar*2,`$6')
- x_Ar = ifelse(`$1',,1,`$1')
- y_Ar = ifelse(`$2',,1,`$2')
- z_Ar = ifelse(`$3',,1,`$3')
- define(`M4Arrow3D',`x_Ar,y_Ar,z_Ar')dnl
- len_Ar = length3D(M4Arrow3D)
- len_Shaft = len_Ar - ht_Ar
- cs_Ar = dot3D(View3D,M4Arrow3D)
- if cs_Ar >= 0 then {
- Shaft: cylinder3D(sprod3D(len_Shaft/len_Ar,M4Arrow3D),diam_Ar)
- Head: cone3D(sprod3D(ht_Ar/len_Ar,M4Arrow3D),wid_Ar) \
- with .Start at Shaft.End } \
- else {
- Head: cone3D(sprod3D(ht_Ar/len_Ar,M4Arrow3D),wid_Ar)
- Shaft: cylinder3D(sprod3D(len_Shaft/len_Ar,M4Arrow3D),diam_Ar) \
- with .End at Head.Start }
- Start: Shaft.Start; End: Head.End
- `$7']')
-
-define(`f2xyz3D',``$1'x = `$2'
-`$1'y = `$3'
-`$1'z = `$4' ')
-
- `prism3D(xdispl,ydispl,zdispl,wid,ht,rotation (rad))'
-define(`prism3D',`[ Start: (0,0)
- xdispl = ifelse(`$1',,linewid,`$1')
- ydispl = ifelse(`$2',,linewid,`$2')
- zdispl = ifelse(`$3',,linewid,`$3')
- widp = ifelse(`$4',,(linewid/5),`$4')
- htp = ifelse(`$5',,(linewid/10),`$5')
- rotp = ifelse(`$6',,0,`$6')
- End: (Project(xdispl,ydispl,zdispl)); C: 0.5 between Start and End
- lenp = length3D(xdispl,ydispl,zdispl)
- az = atan2(ydispl,xdispl); ae = atan2(zdispl,sqrt(xdispl^2+ydispl^2))
- wp2 = widp/2; hp2 = htp/2
-# corners
- f2xyz3D(nwB,rot3Dz(az,rot3Dy(-ae,rot3Dx(rotp, 0,-wp2, hp2))))
- f2xyz3D(swB,rot3Dz(az,rot3Dy(-ae,rot3Dx(rotp, 0,-wp2,-hp2))))
- f2xyz3D(seB,rot3Dz(az,rot3Dy(-ae,rot3Dx(rotp, 0, wp2,-hp2))))
- f2xyz3D(neB,rot3Dz(az,rot3Dy(-ae,rot3Dx(rotp, 0, wp2, hp2))))
- f2xyz3D(nwF,rot3Dz(az,rot3Dy(-ae,rot3Dx(rotp,lenp,-wp2, hp2))))
- f2xyz3D(swF,rot3Dz(az,rot3Dy(-ae,rot3Dx(rotp,lenp,-wp2,-hp2))))
- f2xyz3D(seF,rot3Dz(az,rot3Dy(-ae,rot3Dx(rotp,lenp, wp2,-hp2))))
- f2xyz3D(neF,rot3Dz(az,rot3Dy(-ae,rot3Dx(rotp,lenp, wp2, hp2))))
-# facets
- M4Facet3D(neF,nwF,swF,seF)
- M4Facet3D(neB,seB,swB,nwB)
- M4Facet3D(neF,seF,seB,neB)
- M4Facet3D(neF,neB,nwB,nwF)
- M4Facet3D(seF,swF,swB,seB)
- M4Facet3D(nwF,nwB,swB,swF)
-`$7']')
-
-define(`M4Facet3D',`
-define(`PFacet',`cross3D(diff3D(`$2'x,`$2'y,`$2'z,`$1'x,`$1'y,`$1'z),
- diff3D(`$3'x,`$3'y,`$3'z,`$2'x,`$2'y,`$2'z))')
- if dot3D(View3D,PFacet) > 0 then {
- fFacet = sqrta(dot3D(Light3D,PFacet)/length3D(PFacet))
- P1: (Project(`$1'x,`$1'y,`$1'z))
- P2: (Project(`$2'x,`$2'y,`$2'z))
- P3: (Project(`$3'x,`$3'y,`$3'z))
- P4: (Project(`$4'x,`$4'y,`$4'z))
- line fill_(fFacet) invis from P1 to P2 then to P3 then to P4 then to P1
- line from P1 to P2; round
- line to P3; round
- line to P4; round
- line to P1; round } ')
-
-#####################################################
divert(0)dnl
azimuth = 60
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/xfig/xfiglib.fig b/Master/texmf-dist/doc/latex/circuit-macros/examples/xfig/xfiglib.fig
index d67703acc6e..91a2e37a536 100644
--- a/Master/texmf-dist/doc/latex/circuit-macros/examples/xfig/xfiglib.fig
+++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/xfig/xfiglib.fig
@@ -289,8 +289,10 @@ Single
6 750 1575 1500 2175
2 1 0 1 0 -1 0 -1 -1 0 0 0 0 0 0 2
750 1875 825 1875
+6 825 1575 1425 2175
2 1 0 1 0 -1 0 -1 -1 0 0 0 0 0 0 4
1425 1875 825 1575 825 2175 1425 1875
+-6
2 1 0 1 0 -1 0 -1 -1 0 0 0 0 0 0 2
1425 1875 1500 1875
-6
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/gpic.m4 b/Master/texmf-dist/doc/latex/circuit-macros/gpic.m4
index b53634ead25..6291a70ef79 100644
--- a/Master/texmf-dist/doc/latex/circuit-macros/gpic.m4
+++ b/Master/texmf-dist/doc/latex/circuit-macros/gpic.m4
@@ -1,7 +1,7 @@
divert(-1)
gpic.m4 Initialization for gpic.
-* Circuit_macros Version 10.6, copyright (c) 2024 J. D. Aplevich under *
+* Circuit_macros Version 10.7, copyright (c) 2024 J. D. Aplevich under *
* the LaTeX Project Public Licence in file Licence.txt. The files of *
* this distribution may be redistributed or modified provided that this *
* copyright notice is included and provided that modifications are clearly *
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/lib3D.m4 b/Master/texmf-dist/doc/latex/circuit-macros/lib3D.m4
index 7cc49756ec8..f9116d8cb8a 100644
--- a/Master/texmf-dist/doc/latex/circuit-macros/lib3D.m4
+++ b/Master/texmf-dist/doc/latex/circuit-macros/lib3D.m4
@@ -3,7 +3,7 @@ lib3D.m4 Macros for rotation, projection, and other
operations on argument triples representing
3D vectors or colors.
-* Circuit_macros Version 10.6, copyright (c) 2024 J. D. Aplevich under *
+* Circuit_macros Version 10.7, copyright (c) 2024 J. D. Aplevich under *
* the LaTeX Project Public Licence in file Licence.txt. The files of *
* this distribution may be redistributed or modified provided that this *
* copyright notice is included and provided that modifications are clearly *
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/libSLD.m4 b/Master/texmf-dist/doc/latex/circuit-macros/libSLD.m4
index c2b29ddcf86..65de315cb47 100644
--- a/Master/texmf-dist/doc/latex/circuit-macros/libSLD.m4
+++ b/Master/texmf-dist/doc/latex/circuit-macros/libSLD.m4
@@ -2,7 +2,7 @@ divert(-1)
libSLD.m4 Draft macros for single-line diagram elements
-* Circuit_macros Version 10.6, copyright (c) 2024 J. D. Aplevich under *
+* Circuit_macros Version 10.7, copyright (c) 2024 J. D. Aplevich under *
* the LaTeX Project Public Licence in file Licence.txt. The files of *
* this distribution may be redistributed or modified provided that this *
* copyright notice is included and provided that modifications are clearly *
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/libcct.m4 b/Master/texmf-dist/doc/latex/circuit-macros/libcct.m4
index d46990f88a1..acac0b3ef85 100644
--- a/Master/texmf-dist/doc/latex/circuit-macros/libcct.m4
+++ b/Master/texmf-dist/doc/latex/circuit-macros/libcct.m4
@@ -1,7 +1,7 @@
divert(-1)
libcct.m4
-* Circuit_macros Version 10.6, copyright (c) 2024 J. D. Aplevich under *
+* Circuit_macros Version 10.7, copyright (c) 2024 J. D. Aplevich under *
* the LaTeX Project Public Licence in file Licence.txt. The files of *
* this distribution may be redistributed or modified provided that this *
* copyright notice is included and provided that modifications are clearly *
@@ -1760,12 +1760,11 @@ define(`m4R',`ifelse(`$2',R,-)')define(`m4sc',`dimen_/24')dnl
Amplifier'
define(`amp',`eleminit_(`$1') define(`m4wd',`ifelse(`$2',,`dimen_',`($2)')')dnl
{line to rvec_(max(0,rp_len/2-m4wd/2),0)
- {line from rvec_(m4wd,0) \
- to rvec_(0,m4wd/2) \
- then to rvec_(0,-m4wd/2) \
- then to rvec_(m4wd,0) `$3'}
- line from rvec_(m4wd,0) to rvec_(max(m4wd,rp_len/2+m4wd/2),0) }
- {[box invis ht_ m4wd wid_ m4wd] at rvec_(max(m4wd,rp_len)/2,0)}
+ {[ End: vec_(m4wd,0); line from End \
+ to vec_(0,m4wd/2) \
+ then to vec_(0,-m4wd/2) \
+ then to End `$3'] with .End at rvec_(m4wd,0) }
+ line from rvec_(m4wd,0) to rvec_(max(m4wd,rp_len/2+m4wd/2),0) }
line to rvec_(max(rp_len,m4wd),0) invis ')
`integrator( linespec,size,attributes )'
@@ -1800,7 +1799,7 @@ define(`opamp',
`[ pushdef(`m4dlgth',`ifinstr(`$4',=,dimen_,ifelse(`$4',,dimen_,`($4)'))')dnl
pushkeys_(`$4',`body::N; lgth:m4dlgth; wdth:m4`'lgth;')dnl
pushdef(`dna_',`$5')dnl
- eleminit_(`$1',max(elen_-m4lgth/4,m4lgth))
+ ifelse(`$1',,`lgt=elen_',`eleminit_(`$1'); lgt=max(rp_len,m4lgth)')
W: Here
N: vec_(0,m4wdth/2)
S: vec_(0,-m4wdth/2)
@@ -1811,7 +1810,7 @@ define(`opamp',
then to 0.75 between S and E then to S then to W m4body
line from 0.75 between W and E to E',
`line to N then to E then to S then to W m4body; move to E')
- if rp_len > m4lgth then { line to rvec_(rp_len-m4lgth,0) }
+ if lgt > m4lgth then { line to rvec_(lgt-m4lgth,0) }
Out: Here }
NE: vec_(m4lgth/2,m4wdth/4); E1: NE
SE: vec_(m4lgth/2,-m4wdth/4); E2: SE
@@ -2769,7 +2768,7 @@ define(`m4a',ifelse(substr($1,decr(m4I_),1),u,`define(`m4I_',decr(m4I_))'u,
define(`$1',substr($1,0,m4I_)`'substr($1,m4t))')')dnl
`Conditional subcomponent draw
- sc_draw(dna string, chars, iftrue, iffalse)'
+ sc_draw(dna string, substring, iftrue, iffalse)'
define(`sc_draw',`m4_dna(`$1',`$2')ifelse(m4I_,-1,`$4',`$3')')
`(r|l|c)label( label, label, label,
@@ -4030,62 +4029,74 @@ define(`tstrip',`[ setdir_(`$1')
`$4' popdef(`m4wid',`m4ht',`m4box')
resetdir_ ]')
- `jack(U|D|L|R|degrees, chars)
+ `jack(U|D|L|R|degrees, chars [;keys])
Phone jack; arg1 sets drawing direction
- chars:
- L|LM|LB|LMB=long and aux contacts; M|B make|break arrows
- S|SM|SB|SMB=short and aux contacts; M|B make|break arrows
- R=right orientation with respect to drawing direction '
+ chars: A sequence of letters L, S, C, each
+ possibly followed by M, B, MB, or BM, e.g. LLMSBM
+ L draws a long contac arm, M adds a Make contact,
+ B a Break contact, and MB or BM adds both
+ S similarly draws a short contact
+ C adds a central medium contact
+ also:
+ X=bring aux contacts to external dots
+ R=right jack orientation wrt to drawing direction
+ keys: dots=dot keys; (default circle=fill_(1))
+ arrowht=expr; (dimen_/8)
+ sleeve=attributes; e.g. shaded "red"
+ sleeveht=expr; (4.5*arrowht)
+ sleevewid=expr; (sleeveht/6)
+ armlen=expr; len of long armature (dimen_*.75) '
define(`jack',`[ setdir_(`$1')
- define(`dna_',`ifelse(`$2',,L,`$2',R,L,`$2')')dnl
- s=ifinstr(dna_,R,-1,1)
- ght = dimen_/2
- {Sleeve: [shade(1,lbox(dimen_/12,ght))] }
- G: Sleeve+vec_(0,-ght/2*s)
- F: Sleeve+vec_(dimen_/24,0)
- aht = dimen_/8
- Q: Sleeve+vec_(-dimen_*0.7,s*(ght*0.45-aht*3))
- define(`m4jbm',) m4auxcontacts(`dna_',L,s,)
- Q: Sleeve+vec_(-dimen_*0.7,(aht*3-ght*0.45)*s)
- define(`m4jbm',) m4auxcontacts(`dna_',S,-s,)
- `$3'; resetdir_ ] ')
-
-define(`m4auxcontacts',`ifinstr($1,$2,
- `define(`m4I_',index($1,$2))dnl
- define(`m4abm',ifelse(substr($1,incr(m4I_),1),M,
- M`'ifelse(substr($1,eval(2+m4I_),1),B,B),
- substr($1,incr(m4I_),1),B,
- B`'ifelse(substr($1,eval(2+m4I_),1),M,M)))dnl
- define(`$1',substr($1,0,m4I_)`'substr($1,eval(m4I_+len(m4abm)+1)))dnl
- cht = aht*ifelse(ifinstr(m4jbm,M,T)`'ifinstr(m4abm,B,T),TT,3.9,3)
- Z: jackcontact(ifelse(`$2',S,0.5,0.6)*dimen_,m4abm`'ifelse($4,,,H),$3) \
- with .T at Q+vec_(0,$3*cht)
- $2`'$4: Z.T; Q: $2`'$4 define(`m4jbm',m4abm)
- ifinstr(m4abm,M, $2`'M`'$4: Z.M) ifinstr(m4abm,B,; $2`'B`'$4: Z.B)
- m4auxcontacts(`$1',$2,$3,ifelse($4,,1,`incr($4)'))')')
-
- `jackcontact(length,chars,sign)
- Phone jack contact to left
- chars:
- R: right orientation to drawing direction
- M|B: make|break contact arrows '
-define(`jackcontact',`[ Point: (0,0)
- line from Point ifinstr(`$2',H,`-vec_(dimen_/10,0)',
- `to vec_(-dimen_/16,neg_(`$3')*dimen_/16) \
- then to vec_(-dimen_/8,0) then') \
- to vec_(neg_(`$1'),0)
- T: dot(,,1)
- C: T+vec_(dimen_/5,0)
- ifinstr(`$2',H,`
- Connector: [shade(1,lbox(dimen_/24,cht))] \
- at T+vec_((`$1')-dimen_*0.16,neg_(`$3')*cht/2)')dnl
- ifinstr(`$2',M,`
- M: C+vec_(0,`$3'*aht*1.9)
- arrow m4c_l <- ht aht wid aht from C+vec_(0,`$3'*aht*0.4) \
- to M ')dnl
- ifinstr(`$2',B,`
- B: C+vec_(0,neg_(`$3')*aht*1.5)
- arrow m4c_l <- ht aht wid aht from C to B ') ; `$4' ] ')
+ pushkeys_(`$2',`dots:circle=fill_(1):N;
+ arm::N; armlen:dimen_*0.75; arrowht:dimen_/8;
+ sleeve::N; sleeveht:m4`'arrowht*4.5; sleevewid:m4`'sleeveht/6; ')dnl
+ pushdef(`dna_',`$2') pushdef(`rght',sc_draw(`dna_',R,-)1)dnl
+ pushdef(`m4extrn',sc_draw(`dna_',X,X)) pushdef(`m4vd',`dimen_/16')dnl
+ ifelse(dna_,,`define(`dna_',L)')
+ Sleeve: [lbox(m4sleevewid,m4sleeveht,m4sleeve)]
+ F: Sleeve+vec_(m4sleevewid/2,0)
+ Ctr: (2 between F and Sleeve)+vec_(-(m4armlen+m4vd), 0);
+ G: Sleeve+vec_(0,-m4sleeveht/2*(rght)); Sx: G+(Ctr-Sleeve)
+ H: 2 between G and Sleeve; Lx: H+(Ctr-Sleeve)
+ Q: Ctr; m4jcontacts(dna_,L,rght,,m4armlen)
+ Q: Ctr; m4jcontacts(dna_,C,rght,,m4armlen)
+ Q: Ctr; m4jcontacts(dna_,S,neg_(rght),,m4armlen)
+ ifelse(m4extrn,X,`ifelse(rght,-1,
+ `T: Sleeve + (Lx-Ctr)+((Between_(G,H,dimen_/6))-G)
+ line from H to T then to T+(Ctr-Sleeve); H: dot(,m4dots); ',
+ `T: Sleeve + (Sx-Ctr)+((Between_(H,G,dimen_/6))-H)
+ line from G to T then to T+(Ctr-Sleeve); G: dot(,m4dots); ')')
+ `$3'; resetdir_ popdef(`m4dots',`m4arm', `m4armlen', `m4arrowht',
+ `m4sleeve', `m4sleeveht', `m4sleevewid',`dna_', `rght', `m4extrn', `m4vd')
+ ] ')
+ `m4jcontacts(dna_, L|S|C, 1|-1, blank|n, armlen)'
+define(`m4jcontacts',`ifinstr(`$1',`$2',
+ `pushdef(`dna_',$1) pushdef(`m4code',regexp(dna_,$2\(M\|B\|MB\|BM\)?,\&))dnl
+ sc_draw(`dna_',m4code,
+ `pushdef(`armln',`ifelse(`$2',S,0.55/0.75*,`$2',C,0.65/0.75*)'`$5')dnl
+ pushdef(`connht',`ifelse($4,,3,ifelse(m4code,$2`'B,4.5,3))')dnl
+ $2`'x: Q ifelse(`$2',C,,
+ `+vec_(0,$3*ifelse(`$4',,m4sleeveht/2,connht*m4arrowht)); Q: $2`'x')
+ $2`'$4: dot(at Q,m4dots)
+ Armature: line chop last [].wid/2 chop 0 to rvec_(armln-2*m4vd,0) dnl
+ ifelse($4,,`then to rvec_(armln-m4vd,neg_(`$3')*m4vd) \
+ then to rvec_(armln,0)')
+ Contact: Q+vec_(m4arrowht*2,0)
+ ifelse($4,,,`Connector: [lbox(m4vd,connht*m4arrowht,m4sleeve)] \
+ at last []+vec_(armln-3*m4vd,neg_(`$3')*connht*m4arrowht/2)')
+ ifinstr(m4code,M,`$2`'M`'$4: Contact+vec_(0,`$3'*m4arrowht*1.9)
+ $2`'M`'$4`'A: arrow m4c_l <- ht m4arrowht wid m4arrowht \
+ from Contact+vec_(0,`$3'*m4arrowht*0.4) \
+ to $2`'M`'$4 ifelse(m4extrn,X,`then to $2`'$4+vec_(0,`$3'*m4arrowht*1.9)
+ $2`'M`'$4: dot(,m4dots)'); $2`'x: $2`'M`'$4')
+ ifinstr(m4code,B,`$2`'B`'$4: Contact+vec_(0,neg_(`$3')*m4arrowht*1.5)
+ $2`'B`'$4`'A: arrow m4c_l <- ht m4arrowht wid m4arrowht from Contact \
+ to $2`'B`'$4 dnl
+ ifelse(m4extrn,X,`then to $2`'$4+vec_(0,neg_(`$3')*m4arrowht*1.5)
+ $2`'B`'$4:dot(,m4dots)')')
+ m4jcontacts(dna_,$2,$3,ifelse($4,,1,`incr($4)'),`$5')
+ popdef(`armln',`connht')')
+ popdef(`m4code',`dna_')')')
`plug(U|D|L|R|degrees, chars)
Phone plug; arg1 sets drawing direction
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/libgen.m4 b/Master/texmf-dist/doc/latex/circuit-macros/libgen.m4
index f5f1be0d34e..789759e141a 100644
--- a/Master/texmf-dist/doc/latex/circuit-macros/libgen.m4
+++ b/Master/texmf-dist/doc/latex/circuit-macros/libgen.m4
@@ -2,7 +2,7 @@ divert(-1)
libgen.m4 Base macros for dpic and gpic diagrams
-* Circuit_macros Version 10.6, copyright (c) 2024 J. D. Aplevich under *
+* Circuit_macros Version 10.7, copyright (c) 2024 J. D. Aplevich under *
* the LaTeX Project Public Licence in file Licence.txt. The files of *
* this distribution may be redistributed or modified provided that this *
* copyright notice is included and provided that modifications are clearly *
@@ -192,7 +192,7 @@ define(`latexcommand',
`$2')')
define(`m4announceprocessor',`dnl Do not change the format of the next line:
-`#' `$1' Version 10.6: ifelse(m4picprocessor,gpic,`Gpic',
+`#' `$1' Version 10.7: ifelse(m4picprocessor,gpic,`Gpic',
m4postprocessor,pstricks,`PSTricks',
m4postprocessor,pgf,`TikZ PGF',
m4postprocessor,mfpic,`Mfpic',
@@ -484,7 +484,7 @@ define(`intersect_',`((($3.x-$1.x)*($3.y-$4.y)-($3.y-$1.y)*($3.x-$4.x))/\
(($2.x-$1.x)*($3.y-$4.y)-($2.y-$1.y)*($3.x-$4.x))\
between `$1' and `$2')')
- `Dashed line drawn in detail
+ `Dashed line drawn in detail (dpic only)
dashline(
linespec,
thickness|<-|->|<->|color,
@@ -492,26 +492,25 @@ define(`intersect_',`((($3.x-$1.x)*($3.y-$4.y)-($3.y-$1.y)*($3.x-$4.x))/\
gap len,G)
Arg5=G ends (but does not start)
the line with a gap
- Note: can change default direction'
-define(`dashline',`rpoint_(`$1')define(`m4opts',`$2')
- define(`m4dsh',`ifelse(`$3',,dashwid,abs(`$3'))')dnl
- define(`m4gap',`ifelse(`$4',,m4dsh/2,abs(`$4'))')dnl
- define(`m4lar',)define(`m4rar',)dnl
- ifelse(m4xtract(`m4opts',<->),1,`define(`m4lar',<-)define(`m4rar',->)',dnl
- m4xtract(`m4opts',<-),1,`define(`m4lar',<-)',dnl
- m4xtract(`m4opts',->),1,`define(`m4rar',->)')
+ Shortens dash len as required to fit with
+ given gap len.'
+pushdef(`dashline',`line invis `$1'; M4S:last line.start; M4E:last line.end
+ m4dln=distance(M4S,M4E); move to M4S
+ pushdef(`m4opts',`patsubst($2,<->\|<-\|->)')dnl
+ pushdef(`m4dsh',`ifelse(`$3',,dashwid,abs(`$3'))')dnl
+ pushdef(`m4gap',`ifelse(`$4',,m4dsh/2,abs(`$4'))')dnl
if (m4dsh+m4gap)==0 then { dashline_n = 1 } \
- else {dashline_n = max(1,\
- int(abs((rp_len ifelse(`$5',G,,+m4gap))/(m4dsh+m4gap))))}
- dashline_f = (rp_len-(dashline_n ifelse(`$5',G,,-1))*m4gap)/dashline_n
- for m4ti=1 to dashline_n do {
- if m4ti==1 then { line m4opts m4lar to rvec_(dashline_f,0) } \
- else { if m4ti==dashline_n then { line m4opts m4rar to rvec_(dashline_f,0)}\
- else { line m4opts to rvec_(dashline_f,0) }}
- ifelse(`$5',G,,
- `if m4ti < dashline_n then {')move to rvec_(m4gap,0)ifelse(`$5',G,,})
- } ')
- filled circle for rounded corners'
+ else {dashline_n = 1+int((m4dln ifelse(`$5',G,-m4gap))/(m4dsh+m4gap))}
+ dashline_f = (m4dln-m4gap*(dashline_n ifelse(`$5',G,,-1)))/dashline_n
+ M4dsh: (M4E-M4S)*(dashline_f/m4dln); M4gap: (M4E-M4S)*(m4gap/m4dln)
+ {if dashline_n==1 then { line `$2' to M4S+M4dsh } \
+ else { line m4opts ifinstr($2,<-,<-) to M4S+M4dsh; M4S: Here+M4gap
+ for m4ti=2 to dashline_n-1 do { line m4opts \
+ from M4S to M4S+M4dsh; M4S: Here+M4gap }
+ line m4opts ifinstr($2,->,->) from M4S to M4S+M4dsh }}
+ line invis to M4E popdef(`m4gap',`m4dsh',`m4opts') ')
+
+ `filled circle for rounded corners'
define(`round',`{ circle thick ifelse(`$2',,`linethick/2',(`$2')/2) \
diameter ifelse(`$2',,`linethick',`($2)')/2 pt__ \
ifelse(`$1',,`at Here',`$1') $3} ifelse(`$1',,,`; move to last circle .c')')
@@ -1307,17 +1306,17 @@ define(`arcdimension_',`arc invis `$1' ; {
radv=expr; vertex radius
Defined internal points: C, V[0], ... V[nsides]'
define(`polygon',`[ C: Here; nsides=ifelse(`$1',,3,`$1')
- a=360/nsides; b=(180-a)/2 # interior angles
- pushkeys_(`$2',
- `line::N; rot:90; side:linewid; radv:0; rad:m4`'side*sind(b)/sind(a);')dnl
- for i=0 to nsides-1 do { V[i]: Rect_(m4rad,m4rot+a*i) }
+ a_poly=360/nsides; b_poly=(180-a_poly)/2 # interior angles
+ pushkeys_(`$2',`line::N; rot:90-((`$1'-1)%2)*180/(`$1'); side:linewid;
+ radv:0; rad:m4`'side*sind(b_poly)/sind(a_poly);')dnl
+ for i_poly=0 to nsides-1 do { V[i_poly]: Rect_(m4rad,m4rot+a_poly*i_poly) }
V[nsides]: 0.5 between V[nsides-1] and V[0]
-#for i=0 to nsides do { sprintf("%g",i) at V[i] above }
+#for i_poly=0 to nsides do { sprintf("%g",i_poly) at V[i_poly] above }
if m4radv!=0 then { move to V[nsides]
- for i=0 to nsides-1 do { arcto(V[i],V[i+1],m4radv,m4line) }
+ for i_poly=0 to nsides-1 do { arcto(V[i_poly],V[i_poly+1],m4radv,m4line) }
line m4line to V[nsides] } \
- else { line m4line from V[nsides] to V[0]; for i=1 to nsides do {
- continue to V[i] } }
+ else { line m4line from V[nsides] to V[0]; for i_poly=1 to nsides do {
+ continue to V[i_poly] } }
`$3' popdef(`m4line',`m4rot',`m4side',`m4radv',`m4rad') ]')
`shade(gray value,closed line specs)
@@ -1452,77 +1451,90 @@ m4postprocessor,xfig,
ifdef(`r_',`shaded rgbstring(r_,g_,b_)',`fill ifelse(`$1',,0,`$1')')')')
`sarrow(linespec,keys)
- Single-segment single-headed special arrow
+ One-segment single-headed special arrow
keys= type=O[pen] (default)
D[iamond]
C[rowfoot]
+ DI (disk)
P[lain]
- R[ight]
- L[eft]
+ R[ight] (half plain head)
+ L[eft] (half plain head)
+ PP[lain](double plain head)
wdth=expr (default arrowwid)
lgth=expr (default arrowht)
- shaft= attributes (dashed etc)
- head= attributes (shaded etc)
+ head=attributes (shaded etc)
+ shaft=attributes (default=head)
+ hook=[L|R|LR] (default none)
name=Name (default Sarrow_)'
define(`sarrow',
`pushkeys_(`$2',`type:O:N; head::N; shaft:m4`'head:N; wdth:arrowwid;
- lgth:arrowht; name:Sarrow_:N')dnl
+ lgth:arrowht; hook::N; name:Sarrow_:N')dnl
arrow `$1' m4head invis
- m4_dx = last arrow.end.x-last arrow.start.x
- m4_dy = last arrow.end.y-last arrow.start.y
- m4_t = last arrow.thick bp__
-m4name: [
- ifelse(ifelse(m4type,L,L,m4type,R,R),,,`poppushdef(`m4wdth',(m4wdth*2))')
- Point: Here; Shaft: Point-(m4_dx,m4_dy)
+ m4_sadx = last arrow.end.x-last arrow.start.x
+ m4_sady = last arrow.end.y-last arrow.start.y
+ m4_sath = last arrow.thick bp__
+{ m4name: [ dnl
+ ifelse(ifelse(m4type,L,L,m4type,R,R),,,`poppushdef(`m4wdth',(m4wdth*2))') dnl
+ Point: Here; Shaft: Point-(m4_sadx,m4_sady)
C: (Shaft-Point)/distance(Shaft,Point)
- X: m4affine(m4lgth,0,Point,C)
+ X: m4affine(m4lgth,0,Point,C) # hookless butt
if m4wdth == 0.0 then { po = 0.0 } \
- else { po = min((m4_t/m4wdth)*sqrt((m4lgth)^2+(m4wdth)^2/4),m4lgth) }
- P: m4affine(po,0,Point,C)
- h = m4lgth-m4_t/2;
+ else { po = min((m4_sath/m4wdth)*sqrt((m4lgth)^2+(m4wdth)^2/4),m4lgth) }
+ Pl: m4affine(po,0,Point,C) # line centre for point
+ h = m4lgth-m4_sath/2;
x = h - po;
if m4lgth == 0.0 then { v = 0.0 } else { v = ((m4wdth/2)/m4lgth)*x }
- R: m4affine(h, v,Point,C);
- L: m4affine(h,-v,Point,C);
+ Rl: m4affine(h, v,Point,C);
+ Ll: m4affine(h,-v,Point,C);
if x == 0.0 then { t = 1 } else { t = m4lgth/x }
- if m4lgth==0 then { y = 0 } else { y = m4lgth-po+m4_t*m4wdth/m4lgth/4 }
- Ly: (P*(x-y)+L*y)/x
- Ry: (P*(x-y)+R*y)/x
+ if m4lgth==0 then { y = 0 } else { y = m4lgth-po+m4_sath*m4wdth/m4lgth/4 }
+ Lo: (Pl*(x-y)+Ll*y)/x
+ Ro: (Pl*(x-y)+Rl*y)/x
+ Z: ifelse(m4hook,,`Shaft',`m4affine(-distance(Lo,Ro)/4,0,Shaft,C)')
ifinstr(m4type,O,
- `line from Shaft to (L+R)/2 m4shaft
- line to L then to P then to R then to Here m4head',
+ `line from Z to (Ll+Rl)/2 m4shaft
+ line to Ll then to Pl then to Rl then to Here m4head',
+ m4type,DI,
+ `line from Z to (Ll+Rl)/2 m4shaft
+ circle diam distance(Point,X)-m4_sath at (Point+X)/2 m4head',
m4type,D,
- `poppushdef(`m4lgth',(m4lgth+m4_t))dnl
+ `poppushdef(`m4lgth',(m4lgth+m4_sath))dnl
s = sqrt(m4lgth^2+m4wdth^2)/2
- if m4wdth==0 then { pd = 0 } else { pd = m4_t*s/m4wdth }
+ if m4wdth==0 then { pd = 0 } else { pd = m4_sath*s/m4wdth }
PD: m4affine(pd,0,Point,C)
- line from Shaft to X m4shaft
- if m4lgth==0 then { pb = 0 } else { pb = m4_t*s/m4lgth }
+ line from Z to X m4shaft
+ if m4lgth==0 then { pb = 0 } else { pb = m4_sath*s/m4lgth }
PL: m4affine(m4lgth/2, m4wdth/2-pb,Point,C)
PR: m4affine(m4lgth/2,-m4wdth/2+pb,Point,C)
line to PL then to PD then to PR then to X \
ifelse(m4head,,fill_(1),m4head)',
m4type,P,
- `line from Shaft to P m4shaft
- line from Ly to P then to Ry m4head',
+ `line from Z to Pl m4shaft
+ line from Lo to Pl then to Ro m4head
+ ifinstr(m4type,PP,`Px: Pl-(Ll+Rl)/2
+ line from Lo-Px to Pl-Px then to Ro-Px m4head')',
m4type,C,
- `line from Shaft to Point m4head
- Q: (-C.y,C.x)*((m4wdth-m4_t)/2)
- Y: m4affine(m4lgth-m4_t/2,0,Point,C)
+ `Q: (-C.y,C.x)*((m4wdth-m4_sath)/2)
+ Y: m4affine(m4lgth-m4_sath/2,0,Point,C)
+ line from Z to Y m4shaft; line to Point m4head
ifdpic(`spline 0.4 from Point+Q to Y+Q then to Y-Q then to Point-Q',
`spline from Point+(Q.x,Q.y) to Y+(Q.x,Q.y) \
then to Y-(Q.x,Q.y) then to Point-(Q.x,Q.y)') m4head',
m4type,R,
- `line from Shaft to P m4shaft
- circle diam m4_t/2 at Here m4shaft thick last line.thick/2
- line from 1bp__/distance(Ly,P) between P and Ly to P then to Ry m4shaft',
+ `line from Z to Pl m4shaft
+ circle diam m4_sath/2 at Here m4shaft thick last line.thick/2
+ line from 1bp__/distance(Lo,Pl) between Pl and Lo to Pl then to Ro m4shaft',
m4type,L,
- `line from Shaft to P m4shaft
- circle diam m4_t/2 at Here m4shaft thick last line.thick/2
- line from 1bp__/distance(Ry,P) between P and Ry to P then to Ly m4shaft')
- popdef(`m4type',`m4head',`m4shaft',`m4wdth',`m4lgth',`m4name')dnl
- ] with .Point at Here')
-define(`m4affine',
+ `line from Z to Pl m4shaft
+ circle diam m4_sath/2 at Here m4shaft thick last line.thick/2
+ line from 1bp__/distance(Ro,Pl) between Pl and Ro to Pl then to Lo m4shaft')
+ ifinstr(m4hook,L,`ZD: (Lo-Ro)/2
+ arc cw m4shaft from Z to Z+ZD with .c at Z+(ZD/2); ') dnl
+ ifinstr(m4hook,R,`ZD: (Ro-Lo)/2
+ arc m4shaft from Z to Z+ZD with .c at Z+(ZD/2)') dnl
+ popdef(`m4type',`m4head',`m4shaft',`m4wdth',`m4lgth',`m4hook',`m4name')dnl
+ ] with .Point at Here } ')
+define(`m4affine', dnl (x,y,Orig,(cost,sint)) Orig+rot(cost,sint)*(x,y)
``$3' + (`$4'.x*(`$1')-`$4'.y*(`$2'),`$4'.y*(`$1')+`$4'.x*(`$2'))')
`open_arrow(linespec, ht, wid, head attribs)
@@ -1530,7 +1542,6 @@ define(`m4affine',
define(`open_arrow',`sarrow(`$1',
type=O;ifelse(`$2',,,lgth=`$2';)ifelse(`$3',,,wdth=`$3';)head=`$4')')
-
`elchop(E,A) chop for ellipses
evaluates to "chop r" where r is the distance
from the centre of ellipse E to the
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/liblog.m4 b/Master/texmf-dist/doc/latex/circuit-macros/liblog.m4
index 31dd9b2acac..2416551a70a 100644
--- a/Master/texmf-dist/doc/latex/circuit-macros/liblog.m4
+++ b/Master/texmf-dist/doc/latex/circuit-macros/liblog.m4
@@ -1,7 +1,7 @@
divert(-1)
liblog.m4 Logic gates
-* Circuit_macros Version 10.6, copyright (c) 2024 J. D. Aplevich under *
+* Circuit_macros Version 10.7, copyright (c) 2024 J. D. Aplevich under *
* the LaTeX Project Public Licence in file Licence.txt. The files of *
* this distribution may be redistributed or modified provided that this *
* copyright notice is included and provided that modifications are clearly *
@@ -75,24 +75,28 @@ define(`rsvec_',`Here+svec_(`$1',`$2')')
convenience for drawing NOT circles'
define(`NOT_circle',`circle diam N_diam*L_unit N_attr')
- `LH_symbol([U|D|L|R|degrees][I])
+ `LH_symbol([U|D|L|R|degrees][I],keys)
I=inverted
- logical hysteresis symbol'
+ logical hysteresis symbol
+ keys: hght=expr; (H_ht)
+ wdth=fraction; (body wdth=frac*hght) '
define(`LH_symbol',`[ define(`m4LH',patsubst(`$1',I))dnl
+ pushkeys_(`$2',`hght:H_ht; wdth:0.6;')dnl
define(`m4Hs',ifinstr(`$1',I,-)H_ht)setdir_(m4LH,R)dnl
line to svec_(H_ht,0) \
then to svec_(1.1*H_ht,m4Hs)
- line from rsvec_(0.4*H_ht,0) \
- to rsvec_(-0.6*H_ht,0) \
- then to rsvec_(-0.7*H_ht,-(m4Hs))
- `$2'; resetdir_ ] ')
+ line from rsvec_((1-m4wdth)*H_ht,0) \
+ to rsvec_(-m4wdth*H_ht,0) \
+ then to rsvec_(-(m4wdth+0.1)*H_ht,-(m4Hs))
+ `$2'; resetdir_ popdef(`m4hght',`m4wdth') ]')
- `LT_symbol(U|D|L|R|degrees)
- triangle_symbol'
-define(`LT_symbol', `[ setdir_(`$1',R)
- line to svec_(0,H_ht*5/8) then to svec_(H_ht,0) \
- then to svec_(0,-H_ht*5/8) then to Here
- `$2'; resetdir_ ] ')
+ `LT_symbol(U|D|L|R|degrees,keys)
+ triangle_symbol
+ keys: wdth=expr; (H_ht) '
+define(`LT_symbol', `[ setdir_(`$1',R) pushkeys_(`$2',`wdth:H_ht')
+ line to svec_(0,m4wdth*5/8) then to svec_(m4wdth,0) \
+ then to svec_(0,-m4wdth*5/8) then to Here
+ `$2'; resetdir_ popdef(`m4wdth') ] ')
`BOX_gate(inputs,output,swid,sht,label,
attributes)
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/mfpic.m4 b/Master/texmf-dist/doc/latex/circuit-macros/mfpic.m4
index 2754139ec07..c9c520d0cdf 100644
--- a/Master/texmf-dist/doc/latex/circuit-macros/mfpic.m4
+++ b/Master/texmf-dist/doc/latex/circuit-macros/mfpic.m4
@@ -1,7 +1,7 @@
divert(-1)
mfpic.m4 Initialization for mfpic.
-* Circuit_macros Version 10.6, copyright (c) 2024 J. D. Aplevich under *
+* Circuit_macros Version 10.7, copyright (c) 2024 J. D. Aplevich under *
* the LaTeX Project Public Licence in file Licence.txt. The files of *
* this distribution may be redistributed or modified provided that this *
* copyright notice is included and provided that modifications are clearly *
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/mpost.m4 b/Master/texmf-dist/doc/latex/circuit-macros/mpost.m4
index 02a2375c274..8f103182abd 100644
--- a/Master/texmf-dist/doc/latex/circuit-macros/mpost.m4
+++ b/Master/texmf-dist/doc/latex/circuit-macros/mpost.m4
@@ -1,7 +1,7 @@
divert(-1)
mpost.m4 Initialization for metapost.
-* Circuit_macros Version 10.6, copyright (c) 2024 J. D. Aplevich under *
+* Circuit_macros Version 10.7, copyright (c) 2024 J. D. Aplevich under *
* the LaTeX Project Public Licence in file Licence.txt. The files of *
* this distribution may be redistributed or modified provided that this *
* copyright notice is included and provided that modifications are clearly *
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/pdf.m4 b/Master/texmf-dist/doc/latex/circuit-macros/pdf.m4
index 71916a2f3d6..33931b52b23 100644
--- a/Master/texmf-dist/doc/latex/circuit-macros/pdf.m4
+++ b/Master/texmf-dist/doc/latex/circuit-macros/pdf.m4
@@ -1,7 +1,7 @@
divert(-1)
pdf.m4 Initialization for pdf output.
-* Circuit_macros Version 10.6, copyright (c) 2024 J. D. Aplevich under *
+* Circuit_macros Version 10.7, copyright (c) 2024 J. D. Aplevich under *
* the LaTeX Project Public Licence in file Licence.txt. The files of *
* this distribution may be redistributed or modified provided that this *
* copyright notice is included and provided that modifications are clearly *
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/pgf.m4 b/Master/texmf-dist/doc/latex/circuit-macros/pgf.m4
index 845427083cb..06b82cd0241 100644
--- a/Master/texmf-dist/doc/latex/circuit-macros/pgf.m4
+++ b/Master/texmf-dist/doc/latex/circuit-macros/pgf.m4
@@ -1,7 +1,7 @@
divert(-1)
pgf.m4 Initialization for Tikz-pgf.
-* Circuit_macros Version 10.6, copyright (c) 2024 J. D. Aplevich under *
+* Circuit_macros Version 10.7, copyright (c) 2024 J. D. Aplevich under *
* the LaTeX Project Public Licence in file Licence.txt. The files of *
* this distribution may be redistributed or modified provided that this *
* copyright notice is included and provided that modifications are clearly *
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/postscript.m4 b/Master/texmf-dist/doc/latex/circuit-macros/postscript.m4
index 7e4882451d2..01f3704b90e 100644
--- a/Master/texmf-dist/doc/latex/circuit-macros/postscript.m4
+++ b/Master/texmf-dist/doc/latex/circuit-macros/postscript.m4
@@ -1,7 +1,7 @@
divert(-1)
postscript.m4 Initialization for Postscript output.
-* Circuit_macros Version 10.6, copyright (c) 2024 J. D. Aplevich under *
+* Circuit_macros Version 10.7, copyright (c) 2024 J. D. Aplevich under *
* the LaTeX Project Public Licence in file Licence.txt. The files of *
* this distribution may be redistributed or modified provided that this *
* copyright notice is included and provided that modifications are clearly *
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/psfrag.m4 b/Master/texmf-dist/doc/latex/circuit-macros/psfrag.m4
index 31eff163d0a..95a546a2dd5 100644
--- a/Master/texmf-dist/doc/latex/circuit-macros/psfrag.m4
+++ b/Master/texmf-dist/doc/latex/circuit-macros/psfrag.m4
@@ -2,7 +2,7 @@ divert(-1)
psfrag.m4 Initialization for dpic -f processing:
Postscript with psfrag strings
-* Circuit_macros Version 10.6, copyright (c) 2024 J. D. Aplevich under *
+* Circuit_macros Version 10.7, copyright (c) 2024 J. D. Aplevich under *
* the LaTeX Project Public Licence in file Licence.txt. The files of *
* this distribution may be redistributed or modified provided that this *
* copyright notice is included and provided that modifications are clearly *
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/pstricks.m4 b/Master/texmf-dist/doc/latex/circuit-macros/pstricks.m4
index 528fdcd1470..3f69c35cd64 100644
--- a/Master/texmf-dist/doc/latex/circuit-macros/pstricks.m4
+++ b/Master/texmf-dist/doc/latex/circuit-macros/pstricks.m4
@@ -1,7 +1,7 @@
divert(-1)
pstricks.m4 Initialization for PSTricks.
-* Circuit_macros Version 10.6, copyright (c) 2024 J. D. Aplevich under *
+* Circuit_macros Version 10.7, copyright (c) 2024 J. D. Aplevich under *
* the LaTeX Project Public Licence in file Licence.txt. The files of *
* this distribution may be redistributed or modified provided that this *
* copyright notice is included and provided that modifications are clearly *
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/svg.m4 b/Master/texmf-dist/doc/latex/circuit-macros/svg.m4
index 4c3adb994b8..02a5db08e49 100644
--- a/Master/texmf-dist/doc/latex/circuit-macros/svg.m4
+++ b/Master/texmf-dist/doc/latex/circuit-macros/svg.m4
@@ -1,7 +1,7 @@
divert(-1)
svg.m4 Initialization for svg output.
-* Circuit_macros Version 10.6, copyright (c) 2024 J. D. Aplevich under *
+* Circuit_macros Version 10.7, copyright (c) 2024 J. D. Aplevich under *
* the LaTeX Project Public Licence in file Licence.txt. The files of *
* this distribution may be redistributed or modified provided that this *
* copyright notice is included and provided that modifications are clearly *
@@ -77,6 +77,7 @@ Some fairly safe choices: Arial, Helvetica, Times, Courier, Verdana, Georgia,
Palatino, Garamond, Bookman, Cursive, Trebuchet MS, Arial Black, Impact.
'
`svgfontratio(fontname)
+
reasonable dptextratio values for common fonts'
define(`svgfontratio',`ifinstr(
`$1',Times,0.66,
@@ -96,6 +97,8 @@ define(`svgfontratio',`ifinstr(
`$1',Impact,0.79,
dptextratio)')
+define(`svg_baselineskip',`(textht/svgfontratio)')
+
`see http://www.ascii.cl/htmlcodes.htm
and http://webdesign.about.com/od/localization/l/blhtmlcodes-gr.htm'
`These macros are used in strings so the double quote is entered as \". '
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/xfig.m4 b/Master/texmf-dist/doc/latex/circuit-macros/xfig.m4
index c98819df7f0..7ca0831a7de 100644
--- a/Master/texmf-dist/doc/latex/circuit-macros/xfig.m4
+++ b/Master/texmf-dist/doc/latex/circuit-macros/xfig.m4
@@ -1,7 +1,7 @@
divert(-1)
xfig.m4 Initialization for xfig.
-* Circuit_macros Version 10.6, copyright (c) 2024 J. D. Aplevich under *
+* Circuit_macros Version 10.7, copyright (c) 2024 J. D. Aplevich under *
* the LaTeX Project Public Licence in file Licence.txt. The files of *
* this distribution may be redistributed or modified provided that this *
* copyright notice is included and provided that modifications are clearly *