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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
|
\def\pgfcircversion{0.5}
\def\pgfcircversiondate{2016/04/24}
\writestatus{loading}{\pgfcircversiondate{} The CircuiTikz circuit drawing package version \pgfcircversion}
\usemodule[tikz]
\startmodule[circuitikz]
\usetikzlibrary[calc]
\usetikzlibrary[arrows]
\unprotect
\edef\tikzatcode{\the\catcode`\@}
\edef\tikzbarcode{\the\catcode`\|}
\edef\tikzexclaimcode{\the\catcode`\!}
\catcode`\@=11
\catcode`\|=12
\catcode`\!=12
\input pgfcirc.defines.tex
% defaults
\setupmodule
[current=european,
voltage=european,
resistor=american,
inductor=cute,
logic=american,
siunitx=true,
arrowmos=false]
\processaction
[\currentmoduleparameter{voltage}]
[european=>\ctikzset{voltage=european},
american=>\ctikzset{voltage=american}]
\processaction
[\currentmoduleparameter{current}]
[european=>\ctikzset{ current=european},
american=>\ctikzset{ current=american}]
\processaction
[\currentmoduleparameter{label}]
[straight=>\ctikzset{label/align = straight},
align=>\ctikzset{label/align = rotate},
smart=>\ctikzset{label/align = smart}]
\processaction
[\currentmoduleparameter{resistor}]
[european=>\ctikzset{ resistor=european},
american=>\ctikzset{ resistor=american}]
\processaction
[\currentmoduleparameter{inductor}]
[european=>\ctikzset{ inductor=european},
american=>\ctikzset{ inductor=american},
cute=>\ctikzset{ inductor=cute}]
\processaction
[\currentmoduleparameter{diode}]
[full=>\ctikzset{ diode=full},
empty=>\ctikzset{ diode=empty}]
\processaction
[\currentmoduleparameter{logic}]
[european=>\ctikzset{ logic ports=european},
american=>\ctikzset{ logic ports=american}]
\processaction
[\currentmoduleparameter{siunitx}]
[true=>\def\SI#1#2{#1\,#2}
\def\ampere{\rm{A}}
\def\volt{\rm{V}}
\def\ohm{\Omega}
\def\siemens{\rm{S}}
\def\farad{\rm{F}}
\def\henry{\rm{H}}
\def\second{\rm{s}}
\def\coulomb{\rm{C}}
\def\siemens{\rm{S}}
\def\radians{\rm{rad}}
\def\milli{\rm{m}}
\def\micro{\mu}
\def\nano{\rm{n}}
\def\pico{\rm{p}}
\def\kilo{\rm{k}}
\def\mega{\rm{M}}
\def\giga{\rm{G}}
\def\tera{\rm{T}},
false=>]
% \s!default=>\pgf@circ@siunitxtrue,
\processaction
[\currentmoduleparameter{arrowmos}]
[true=>\pgf@circuit@mos@arrowstrue,
false=>\pgf@circuit@mos@arrowsfalse]
% \s!default=>\pgf@circuit@mos@arrowstrue,
\ifpgf@circ@siunitx
% nothing! siunitx and xstrings don't work in context
\fi
% Context specific
\ctikzset{tripoles/op amp/font/.initial=\switchtobodyfont[small]}
\input pgfcircbasic.tex
\catcode`\@=\tikzatcode
\catcode`\|=\tikzbarcode
\catcode`\!=\tikzexclaimcode
% define the environment
\long\def\startcircuitikz#1\stopcircuitikz{\starttikzpicture#1\stoptikzpicture}
\protect
\stopmodule
\endinput
|