1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
.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
cct_init
divert(-1)
`cbresistor(linespec, keys)
keys:
lgth=expr; wdth=expr;
body=body attributes, e.g. shaded "green"
type=A|B; pinched body shape
colors=color:color:...;
Up to 6 colors, a color may be nul '
define(`cbresistor',`eleminit_(`$1')
pushkeys_(`$2',`lgth:dimen_/2; wdth:dimen_/5; body::N; colors::N; type::N')dnl
{line to rvec_(max(0,rp_len/2-m4lgth/2),0) thick linethick*3/2; M4cbW: Here
ifelse(m4type,B,
`[L:rotbox(m4lgth*3/23, m4wdth, shaded "darkgray" m4body,r=m4wdth/20)
C:rotbox(m4lgth*17/23, m4wdth*9/10, shaded "darkgray" m4body) \
with .W at L.E
R:rotbox(m4lgth*3/23, m4wdth, shaded "darkgray" m4body,r=m4wdth/20) \
with .W at C.E] with .L.W at Here; move to last [].R.E',
`rotbox(m4lgth, m4wdth, shaded "darkgray" m4body) with .W at Here')
ifelse(m4colors,,,`define(`m4bw',(m4lgth/23))dnl
definergbcolor(silver,0.75,0.75,0.75)
definergbcolor(gold,1,215/255,0)
stacksplit_(`cbrstack',m4colors,:)stackreverse_(`cbrstack')dnl
stackargs_(`m4pos',22,17,12,7,5,2)dnl
stackdo_(`cbrstack',`ifelse(cbrstack,nul,,
`{ move to M4cbW+vec_(m4pos*m4bw-m4bw/2,0)
define(`m4ctr',ifelse(m4type,B,eval((m4pos>3)*(m4pos<20)),0))dnl
line m4colorfix(outlined,cbrstack) thick m4bw*1.8/(1bp__) \
from rvec_(0,-ifelse(m4ctr,1,0.9*)m4wdth/2) \
to rvec_(0, ifelse(m4ctr,1,0.9*)m4wdth/2)
ifelse(ifelse(cbrstack,silver,1,cbrstack,gold,1),1,
`line outlined rgbstring(0.8,0.8,0.8) thick last line.thick \
from 0.2 along_(last line) to 0.4 along_(last line)
line outlined "white" thick last line.thick \
from 0.25 along_(2nd last line) to 0.3 along_(2nd last line)')
}')
popdef(`m4pos')') stackdo_(`m4pos')')
line to rvec_(max(0,rp_len/2-m4lgth/2),0) thick linethick*3/2}
popdef(`m4lgth',`m4wdth',`m4body',`m4colors',`m4type')dnl
line to rvec_(rp_len,0) invis ')
divert(0)dnl
linewid = 3/2*linewid
ifsvg(definergbcolor(Dandelion,0.95,0.65,0.2))
ifsvg(definergbcolor(Peach,0.76,0.5,0.1))
define(`dpr',
`{ cbresistor(,type=B;
body=m4colorfix(shaded,Dandelion) m4colorfix(outlined,Peach);
colors=`$2') }
{iflatex(`sprintf("\SI{%g}{\ohm}",`$1')')ifsvg("``$1'svg_Omega'") \
at last line.end+(10bp__,-5bp__) rjust}
move right_ moveht*5/6; down_ ')
define(`elen_',(3/2*linewid))
define(`dimen_',(5/4*linewid))
[]
[ down_
foreach_(`pair',`dpr(patsubst(pair,-,`,'):nul:black:silver)',
10-brown:black,
12-brown:red,
15-brown:green,
18-brown:gray,
22-red:red,
27-red:Violet,
33-orange:orange,
39-orange:white,
47-yellow:Violet,
56-green:blue,
68-blue:gray,
82-gray:red)
dpr(100,brown:black:nul:brown:gold)
{"iflatex(\SI{5}{\percent},5 %)" at last line.end+(10bp__,-15bp__) rjust}
] with .nw at last [].ne+(30bp__,0)
.PE
|