写前的扯淡
今天下午在做电路作业,画电路把自己画累了,不想拿格子一笔一笔画电路,于是看看能不能用LaTeX来写。
就没听说过由于懒得手写作业而来用TeX画电路的,属实离谱
circuitikz是tikz的超集,是在tikz的基础上添加了专属画电路的语法内容。
import
不需要\usepackage{tikz}
。
hello world
摘自overleaf的tutorial%E2%80%94Circuit_Diagrams_Using_Circuitikz)
我们直接拿一段hello world难度的代码来分析下,看看你要写的内容表示了啥:
1 2 3 4 5 6 7 8 9
| \begin{circuitikz} \draw (0,0) to[battery] (0,4) to[ammeter] (4,4) to[C] (4,0) -- (3.5,0) to[lamp, *-*] (0.5,0) -- (0,0) (0.5,0) -- (0.5,-2) to[voltmeter] (3.5,-2) -- (3.5,0) ; \end{circuitikz}
|
对hello world的分析
代码的最外层框架是这个样子:
1 2 3 4 5
| \begin{circuitikz} \draw (0, 0) <your-code> ; \end{circuitikz}
|
这里其实可以像tikz那样在里面写多个\draw
语句,如果有很多并联电路可以自己用到。
每条具体的语句中有几个重点的地方:
to
后面中括号可以填内容,第一个表示了元件的种类,后面的是可选参数,关于可选参数后面再分析。
- 中括号后可以紧跟一个坐标,这代表着从当前的起点到该坐标居中绘出上面指定的电路元件。
- 两个坐标可以直接用
--
来连接,这代表着用直的导线来连接这两个点。
- 在我自己认为,一个
\draw
语句最好是描述一个网孔的电路元件分布情况,如果有并联的,虽然也可以在同一个\draw
语句中完成,不过我倾向于另起几个\draw
来完成。
基本电路元件
这部分是填在中括号的第一个参数中的:
- current source: I
- voltage source: V
- capacitance: C
- voltmeter: voltmeter
- ammeter: ammeter
- lamp: lamp
- resistor: R
- battery: battery
- wire: short
电路元件自然有不同的样式风格,就比如电阻可以是一个矩形也可以是折线,一般我们通过选用american或者european来确定电路的样式。
可选参数
标节点
o-o
:在连线的起始段和末端都画一个空心点
*-*
:在连线的起始段和末端都画一个实心点
o-*
*-o
加样式
l=
i=
v=
:一个弧线的箭头
f=
:一个浮在旁边的箭头,经常用来标电流,及其常用
f_=
:数据或者标识符通过加一个下划线可以换一边
加单位
<\ampere>
<\volt>
<\frad>
<\ohm>
<\kilo>
, <\milli>
, …
- 当然,传统套行内公式的方法也是可以的
加颜色
调大小
一般其实是不用调的,挤的话直接调大一点就好了,不过想调元件大小也不是不可以啦(
\ctikzset{bipoles/resistor/height=0.15}
:斜杠分隔出若干个想调大小参数的元件名称,这一行调高
\ctikzset{bipoles/resistor/width=0.4}
:也可以调宽
特殊的
V<=10V
:如果想要画的电压源的方向跟默认相反,就手动调整
f>^=i
:在流入方向加一个箭头,标志为i
examples
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| \begin{circuitikz}[european] \draw (0, 0) to [R=$R_2$] (0, 2) -- (0, 6) to [I=$i_{s1}$] (6, 6) -- (6, 2) to [V<=$v_s$] (6, 0) to [short, f=i] (3, 0) -- (0, 0) (6, 4.5) to [R=$R_1$] (0, 4.5) (6, 3) to [R=$R_3$] (3, 3) -- (2, 3) to [I_=$i_{s2}$] (0, 3) (2, 3) to [R=$R_4$, f>^=$i_4$] (2, 0) ; \end{circuitikz}
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| \begin{circuitikz}[european] \draw (0, 0) to [V=9V] (0, 4) to [short] (4, 4) to [R=2<\ohm>] (5, 4) -- (6, 4) to [V<=3V] (7, 4) -- (8, 4) to [R=3<\ohm>] (9, 4) -- (10, 4) to [V=4V] (11, 4) -- (12, 4) to [R=6<\ohm>, f>^=i] (12, 0) -- (0, 0) ; \draw (2, 4) to [R=9<\ohm>] (2, 0); \draw (3, 4) to [R=3<\ohm>] (3, 2) to [I<=2A] (3, 0); \draw (7.5, 4) to [R=2<\ohm>] (7.5, 2) to [V<=10V] (7.5, 0); \end{circuitikz}
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| \begin{circuitikz}[european] \draw (0, 0) to [R=2<\ohm>] (0, 2) -- (0, 3) to [R=1<\ohm>] (0, 4) -- (0, 5) to [short] (4, 5) -- (5, 5) to [R=2<\ohm>, f>=i] (8, 5) to [V<=10V] (8, 0) -- (0, 0) (5, 0) to [R=2<\ohm>] (5, 2) -- (5, 3) to [R=4<\ohm>] (5, 4) -- (5, 5) (0, 2.3) to [I=9A] (5, 2.3) ; \end{circuitikz}
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| \begin{circuitikz}[european] \draw (0, 0) to [short] (0, 6) to [R=4<\ohm>] (3, 6) to [R=6<\ohm>] (6, 6) to [short] (6, 0) to [V=10V] (0, 0) (0, 3) to [R=6<\ohm>] (3, 3) to [R=4<\ohm>] (6, 3) ; \draw (3, 6) node[label={[font=\footnotesize]above:a}] {} to [R=$R_x$, f=i, *-*] (3, 3) node[label={[font=\footnotesize]below:b}] {} ; \end{circuitikz}
|
推荐
- 不会就google
- 不过有时去google还不如直接翻官方的manual
- 多手贱,多写,多写就会了