CircuiTikz – Easy electrical networks

CircuiTikZ is a set of LaTeX macros designed to make it easy to draw electrical networks in scientific publications. It provides a convenient syntax based on to-paths to place the various components. The examples below are from the CircuiTikZ examples page.


circuitikz

Edit and compile if you like:

\documentclass{article}
\usepackage[symbols]{circuitikz}
\usepackage{tikz}


\begin{document}

\begin{circuitikz} \draw
 (0,0) to[C, l=$10\micro\farad$] (0,2) -- (0,3)
  to[R, l=$2.2\kilo\ohm$] (4,3) -- (4,2)
  to[L, l=$12\milli\henry$, i=$i_1$] (4,0) -- (0,0)
 (4,2) to[D*, *-*] (2,0) to [D*, -*] (0,2)
  to[R, l=$1\kilo\ohm$] (2,2)   to[cV, v=$0.3\kilo\ohm i_1$] (4,2)
 (2,0) to[I, i=$1\milli\ampere$:15, -*] (2,2)
; 
\end{circuitikz}

\begin{circuitikz} \draw
 (0,0) node[ground] {}
  to[V, v=$e(t)$, *-*] (0,2) to[C, l=$4\nano\farad$] (2,2)
  to [R, l=$\frac{1}{4}\kilo\ohm$, *-*] (2,0)
 (2,2) to[R, l=$1\kilo\ohm$] (4,2)
  to[C, l=$2\nano\farad$:-90, *-*] (4,0)
 (5,0) to[I, i=$a(t)$:-90, -*] (5,2) -- (4,2)
 (0,0) -- (5,0)
 (0,2) -- (0,3) to[L, l=$2\milli\henry$] (5,3) -- (5,2)

 {[anchor=south east] (0,2) node {1} (2,2) node {2} (4,2) node {3}}
;\end{circuitikz}

\begin{circuitikz} \draw
 (0,0) node[anchor=east]{B}
  to[short, o-*] (1,0)
  to[R, l=$20\ohm$, *-*] (1,2)
  to [R, v=$v_x$, l=$10\ohm$] (3,2)
  to[short] (4,2) to[cI, i=$\frac{\siemens}{5}v_x$, *-*] (4,0)
   to[short] (3,0) to[R, l=$5\ohm$, *-*] (3,2)
 (3,0) -- (1,0)
 (1,2) to[short, *-o] (0,2)
  node[anchor=east]{A}
;\end{circuitikz}

\begin{circuitikz} \draw
 (0,2) to[I, i=$1\milli\ampere$] (2,2)
  to [R, l=$2\kilo\ohm$:-90, *-*] (0,0)
  to [R, l=$2\kilo\ohm$] (2,0)
  to[V, v=$2\volt$:-90] (2,2)
  to[cspst, l=$t_0$] (4,2) -- (4,1.5)
  to [generic, l=1, i=$i_1$, v=$v_1$] (4,-.5) -- (4,-1)
 (0,2) -- (0,-1) to[V, v=$4\volt$] (2,-1)
  to [R, l=$1\kilo\ohm$] (4,-1);

 \begin{scope}[xshift=7.5cm, yshift=.5cm]
  \draw [->] (-2,0)--(2.5,0) node[anchor=west] {$v_1 [\volt]$};
  \draw [->] (0,-2)--(0,2) node[anchor=west] {$i_1 [\milli\ampere]$} ;
  \draw (-1,0) node[anchor=north] {-2} (1,0) node[anchor=south] {2}
   (0,1) node[anchor=west] {4} (0,-1) node[anchor=east] {-4} (2,0) 
   node[anchor=north west] {4} (-1.5,0) node[anchor=south east] {-3};
  \draw [thick]
   (-2,-1) -- (-1,1) -- (1,-1) -- (2,0) -- (2.5,.5);
  \draw [dotted]
   (-1,1) -- (-1,0) (1,-1) -- (1,0) (-1,1) -- (0,1) (1,-1) -- (0,-1);
 \end{scope}
\end{circuitikz}

\end{document} 

Click to download: circuitikz.texcircuitikz.pdf
Open in Overleaf: circuitikz.tex

edit: Link updated.


Comments

#1 Mary, July 5, 2009 at 7:36 p.m.
Hi! Congratulations and thanks to the author by the package.
How do I get the motors in the circuit? I have not found this symbol
thank you very much

#2 Kjell Magne Fauske, July 5, 2009 at 8:17 p.m.
Mary, you should ask Massimo Readelli about this. I’m sure that he can help.

#4 Vesa Linja-aho, October 3, 2010 at 12:50 a.m.
Hi,

I had some problems with this example. First, I got an error message:
! LaTeX Error: Unknown option symbols’ for packagecircuitikz’.
Then I looked at the documentation: http://mirror.ctan.org/graphics/pgf/contrib/circuitikz/doc/latex/circuitikz/circuitikzmanual.pdf
And noticed that “symbols”-option is obsolete. I removed it, but then I started having problems with those \micro\farad -stuff.
How to fix:
\usepackage[symbols]{circuitikz} changed to \usepackage[siunitx]{circuitikz}
Add \SI{}{}, for every component. Like this:
WRONG: [C, l=$10\micro\farad$]
FIXED: [C, l=$\SI{10}{\micro\farad}$]

#5 Vesa Linja-aho, October 3, 2010 at 1:08 a.m.
Just figured out a simpler way: just edit the beginning of the file to:

\documentclass{article}
\usepackage[free-standing-units]{siunitx}
\usepackage{circuitikz}
\usepackage{tikz}´
\begin{document}

#6 François, January 1, 2012 at 1:59 p.m.
And I would add that now (2012) the “free-standing-units” option is also obsolete.
Now it works fine with this preamble:

\documentclass{article}
\usepackage{tikz} \usepackage{circuitikz} \usepackage{siunitx}
\begin{document}

#7 Tiffany Hayes, February 10, 2012 at 11:40 p.m.
So you still need to use the \SI command I noticed. Also, I keep getting units under other circuit parts (but no errors from LaTex). Is there any way to just move the labels, or do I just need to enlarge the size of my circuit? I’m using the code as above, but with the \SI inserted as described above.

#8 Dave, March 7, 2012 at 8:27 p.m.
Hey, is there a way to create a caption above a resistor and the related value below the resitor?

#9 Anon, April 18, 2012 at 9:20 p.m.
I don’t see how to download the CircuiTikz files – the links are 404 not found and it looks as though Massimo Redaelli does not exist at the faculty list of the Dipartimento di Elettronica e Informazione (DEI) website. Could someone who has the packages let me know?

#10 Jannik, May 11, 2012 at 7:25 p.m.
Try https://ctan.org/pkg/circuitikz or your Tex Live Manager

#11 Jeff Hein, May 31, 2012 at 2:51 a.m.
This is simply amazing! Thank you so much for your hard work!

#12 Alex Mason, July 10, 2012 at 11:56 a.m.
Hi all
I have a slightly related issue with this to do with nodes.
In the documentation it says to use things like o_o or _ to produce nodes on the ends of components. However LaTeX gives the error that it does not know the keys o_o or _.
Perhaps they have been replaced or removed. Does anyone know?

#13 fred, September 14, 2012 at 6:30 p.m.
Does anybody know if there is a circuit symbol for varistors,MOVs, or surge arrestors? Thanks

#14 Charlie, October 17, 2012 at 8:41 p.m.
The links to the Circuitikz homepage are broken.

#15 Tony, June 26, 2013 at 3:16 a.m.
The hollow circles at the end of a line is produced w/ -o (right), or o- (left), per the manual samples.
Mr. Redaelli’s circuitikz manual provides this URL for source, and also has useful examples, symbol list

github.com/mredaelli/circuitikz