summaryrefslogtreecommitdiff
path: root/graphics/pgf/contrib/circuitikz/doc/circuitikzmanual.tex
diff options
context:
space:
mode:
Diffstat (limited to 'graphics/pgf/contrib/circuitikz/doc/circuitikzmanual.tex')
-rw-r--r--graphics/pgf/contrib/circuitikz/doc/circuitikzmanual.tex183
1 files changed, 169 insertions, 14 deletions
diff --git a/graphics/pgf/contrib/circuitikz/doc/circuitikzmanual.tex b/graphics/pgf/contrib/circuitikz/doc/circuitikzmanual.tex
index f5fd98ad7a..fdf6d43878 100644
--- a/graphics/pgf/contrib/circuitikz/doc/circuitikzmanual.tex
+++ b/graphics/pgf/contrib/circuitikz/doc/circuitikzmanual.tex
@@ -280,6 +280,7 @@ They \texttt{use fpu reciprocal} key seems to have no side effects, but given th
Here, we will provide a list of incompabilitys between different version of circuitikz. We will try to hold this list short, but sometimes it is easier to break with old syntax than including a lot of switches and compatibility layers.
You can check the used version at your local installation using the macro \verb!\pgfcircversion{}!.
\begin{itemize}
+ \item After v1.1.2: the position of \texttt{american} voltages for the \texttt{open} bipoles (you can revert to old behavior, see section~\ref{sec:sub-voltage-position}).
\item After v0.9.7: the position of the text of transistor nodes has changed; see section~\ref{sec:transistors-labels}.
\item After v0.9.4: added the concept of styling of circuits. It should be backward compatible, but it's a big change, so be ready to use the \texttt{0.9.3} snapshot (see below for details).
\item After v0.9.0: the parameters \texttt{tripoles/american or port/aaa}, \texttt{...bbb}, \texttt{...ccc} and \texttt{...ddd} are no longer used and are silently ignored; the same stands for \texttt{nor}, \texttt{xor}, and \texttt{xnor} ports.
@@ -287,7 +288,7 @@ You can check the used version at your local installation using the macro \verb!
\item Since v0.8.2: voltage and current label directions (\texttt{v<=} / \texttt{i<=}) do NOT change the orientation of the drawn source shape anymore. Use the \texttt{invert} option to rotate the shape of the source. Furthermore, from this version on, the current label (\texttt{i=}) at current sources can be used independent of the regular label (\texttt{l=}).
\item Since v0.7?: The label behaviour at mirrored bipoles has changes, this fixes the voltage drawing, but perhaps you have to adjust your label positions.
\item Since v0.5.1: The parts pfet, pigfete, pigfetebulk and pigfetd are now mirrored by default. Please adjust your yscale-option to correct this.
- \item Since v0.5: New voltage counting direction, here exists an option to use the old behaviour
+ \item Since v0.5: New voltage counting direction, there exists an option to use the old behaviour.
\end{itemize}
If you have older projects that show compatibility problems, you have two options:
@@ -1726,8 +1727,20 @@ Notice that if you choose the dashed style, the noise sources are fillable:
\circuitdescbip*{pvsource}{Photovoltaic-voltage source}{}
\circuitdescbip*[oosource]{ioosource}{Double Zero style current source}{}
\circuitdescbip*[oosource]{voosource}{Double Zero style voltage source}{}
+ \circuitdescbip*[oosourcetrans]{oosourcetrans}{transformer source}{}
+ \circuitdescbip*[ooosource]{ooosource}{transformer with three windings}{}(left/175/0.2, right/5/0.5, prim1/130/.2, prim2/-130/.2, sec1/45/.2, sec2/60/.2, sec3/90/.2, tert1/0/.2, tert2/-45/.2, tert3/-90/.2)
\end{groupdesc}
+The transformershapes vector group options can be specified for the primary (prim$=<value>$), the secondary (sec$=<value>$) and tertiary (tert$=<value>$) three-phase vector groups: \textbf{delta}, \textbf{wye} and \textbf{zig}.
+
+\begin{LTXexample}[varwidth=true]
+\begin{circuitikz}
+ \draw (0,0) to[oosourcetrans,prim=zig,sec=delta,o-] ++(2,0)
+ to[oosourcetrans, prim=delta, sec=wye,-o] ++(0,-2)
+ to[ooosource, prim=wye,sec=zig,tert=delta] (0,0);
+\end{circuitikz}
+\end{LTXexample}
+
\subsubsection{DC sources}
\begin{groupdesc}
\circuitdescbip*{dcvsource}{DC voltage source}{}
@@ -2049,12 +2062,15 @@ This are simple drawings to indicate multiple wires.
\begin{groupdesc}
\circuitdescbip{multiwire}{Single line multiple wires}{multiwire}
\circuitdescbip{bmultiwire}{Double line multiple wires}{bmultiwire}
+\circuitdescbip{tmultiwire}{Triple line multiple wires\footnotemark}{tmultiwire}
+\footnotetext{added by \texttt{olfline}}
\end{groupdesc}
\begin{LTXexample}[varwidth=true]
\begin{circuitikz}
\draw (0,0) to[multiwire=4] ++(1,0);
\draw (0,-2) to[bmultiwire=6] ++(1,0);
+ \draw (0,-4) to[tmultiwire=3] ++(1,0);
\end{circuitikz}
\end{LTXexample}
@@ -2209,6 +2225,8 @@ It also has a \texttt{zero} anchor if you need to rotate it about its real cente
\circuitdesc*{oscillator}{oscillator}{}
\circuitdesc*{circulator}{circulator}{}
\circuitdesc*{wilkinson}{wilkinson divider}{}( in/180/0.1, out2/45/0.1, out1/-45/0.1 )
+ \circuitdesc*{gridnode}{gridnode\footnotemark}{}(left/135/0.2, right/45/0.2, center/-100/0.4, up/90/0.2, down/-45/.2)
+ \footnotetext{added by \texttt{olfline}}
\end{groupdesc}
\begin{groupdesc}
@@ -2232,6 +2250,11 @@ It also has a \texttt{zero} anchor if you need to rotate it about its real cente
\circuitdescbip*{phaseshifter}{phase shifter}{}
\circuitdescbip*{vphaseshifter}{var.\ phase shifter}{}
\circuitdescbip*{detector}{detector}{}
+ \circuitdescbip*{sacdc}{sacdc}{}
+ \circuitdescbip*{sdcac}{sdcac}{}
+ \circuitdescbip*{tacdc}{tacdc}{}
+ \circuitdescbip*{tdcac}{tdcac\footnotemark}{}(left/170/0.5, right/5/0.5, center/-90/0.3, ac1/45/0.1, ac2/-5/.3, ac3/-45/.1, dc1/135/.3, dc2/185/.3)
+ \footnotetext{the 4 converter blocks added by \texttt{olfline}}
\end{groupdesc}
\begin{groupdesc}
@@ -3437,7 +3460,7 @@ If you want different symbols for input and output you can use a null symbol and
\end{LTXexample}
The amplifier label (given as the text of the node) is normally more or less centered in the shape (in the case of the triangular shape, it is shifted a bit to the left to \emph{seem} visually centered); since version \texttt{1.1.0} you can move it at the left side plus a fixed offset setting the key \texttt{component text} or the style with the same name to \texttt{left}; by default the key is \texttt{center}.
-You can change the offset with the key \texttt{left text distance} (default \texttt{0.3em}; you must use a length here).
+You can change the offset with the key \texttt{left text distance} (default \texttt{0.3em}; you must use a length here). These parameters are shared with IEEE-style logic ports.
\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
\begin{circuitikz}[]
@@ -4218,7 +4241,7 @@ You can use the additional elements (the \texttt{notcirc} and the \texttt{schmit
\end{circuitikz}
\end{LTXexample}
-Notice the key \texttt{component text=left} that moves the label near to the left border of the component. There is also a \verb|\ctikzset{component text=left}| if you prefer to have it as a default for all the IEEE ports.\footnote{There is a plan to extend this to other components, too.}
+Notice the key \texttt{component text=left} that moves the label near to the left border of the component. There is also a \verb|\ctikzset{component text=left}| if you prefer to have it as a default for all the IEEE ports.\footnote{You can use the same key with amplifiers, too.}
\paragraph{Stacking and aligning IEEE standard gates.} The standard gates are designed so that they stacks up nicely when positioned using the external leads as anchors. Notice that the ports \textbf{do} have different sizes, but the leads lengths are designed to counter the differences.
@@ -4352,7 +4375,8 @@ Most of the anchors can be seen in the following diagram:
}
\end{circuitikz}
-The inputs anchor are \texttt{in \emph{number}} (on the tip of the lead) and \texttt{bin \emph{number}} (\textbf{b}order \textbf{in}puts) on the component's border (useful if you draw the ports with \texttt{no inut leads}. Additionally, you have \texttt{ibin \emph{number}} (\textbf{i}nner \textbf{b}order \textbf{in}puts) for the \emph{x}-type ports. The anchor named \texttt{left} is where a central border input would be.
+The inputs anchor are \texttt{in \emph{number}} (on the tip of the lead) and \texttt{bin \emph{number}} (\textbf{b}order \textbf{in}puts) on the component's border (useful if you draw the ports with \texttt{no inut leads}).
+Additionally, you have \texttt{ibin \emph{number}} (\textbf{i}nner \textbf{b}order \textbf{in}puts) for the \emph{x}-type ports. The anchor named \texttt{left} is where a central border input would be.
In one-input ports (\texttt{not port}, the buffer, and Schmitt-type ports) you can use plain \texttt{in} or \texttt{in 1} indifferently.
@@ -5373,9 +5397,9 @@ As an alternative for the current arrows, you can also use the following flows.
\end{LTXexample}
\subsection{Voltages}
-See introduction note at Currents (chapter \ref{curr-and-volt}, page \pageref{curr-and-volt})!
+See introduction note at Currents and Voltages (chapter \ref{curr-and-volt}, page \pageref{curr-and-volt}) for the direction of the voltage and currents.
-\subsubsection{European style} The default, with arrows. Use option \texttt{europeanvoltage} or style \verb![european voltages]!.
+\subsubsection{European style} The default, with arrows. Use option \texttt{europeanvoltage} or style \verb![european voltages]!, or setting (even locally) \texttt{voltage=european}.
\begin{LTXexample}[varwidth=true]
\begin{circuitikz}[european voltages]
@@ -5443,11 +5467,77 @@ See introduction note at Currents (chapter \ref{curr-and-volt}, page \pageref{cu
\end{circuitikz}
\end{LTXexample}
+\subsubsection{Straight European style} Using straight arrows. Use option \texttt{straightvoltages} or style \verb![straight voltages]!, or setting (even locally) \texttt{voltage=straight}. Notice that this is an only lightly tested option, so use with care.
+
+\begin{LTXexample}[varwidth=true]
+\begin{circuitikz}[straight voltages]
+ \draw (0,0) to[R, v^>=$v_1$] (2,0);
+\end{circuitikz}
+\end{LTXexample}
+
+\begin{LTXexample}[varwidth=true]
+\begin{circuitikz}[straight voltages]
+ \draw (0,0) to[R, v^<=$v_1$] (2,0);
+\end{circuitikz}
+\end{LTXexample}
+
+\begin{LTXexample}[varwidth=true]
+\begin{circuitikz}[straight voltages]
+ \draw (0,0) to[R, v_>=$v_1$] (2,0);
+\end{circuitikz}
+\end{LTXexample}
+
+\begin{LTXexample}[varwidth=true]
+\begin{circuitikz}[straight voltages]
+ \draw (0,0) to[R, v_<=$v_1$] (2,0);
+\end{circuitikz}
+\end{LTXexample}
+
+\begin{LTXexample}[varwidth=true]
+\begin{circuitikz}[straight voltages]
+ \draw (0,0) to[V=10V, i_=$i_1$] (2,0);
+\end{circuitikz}
+\end{LTXexample}
+\begin{LTXexample}[varwidth=true]
+\begin{circuitikz}[straight voltages]
+ \draw (0,0) to[V<=10V, i_=$i_1$] (2,0);
+\end{circuitikz}
+\end{LTXexample}
+
+\begin{LTXexample}[varwidth=true]
+\begin{circuitikz}[straight voltages]
+ \draw (0,0) to[I=1A, v_=$u_1$] (2,0);
+\end{circuitikz}
+\end{LTXexample}
+
+\begin{LTXexample}[varwidth=true]
+\begin{circuitikz}[straight voltages]
+ \draw (0,0) to[I<=1A, v_=$u_1$] (2,0);
+\end{circuitikz}
+\end{LTXexample}
+
+\begin{LTXexample}[varwidth=true]
+\begin{circuitikz}[straight voltages]
+ \draw (0,0) to[I=$~$,l=1A, v_=$u_1$] (2,0);
+\end{circuitikz}
+\end{LTXexample}
+
+\begin{LTXexample}[varwidth=true]
+\begin{circuitikz}[straight voltages]
+ \draw (0,0) to[I,l=1A, v_=$u_1$] (2,0);
+\end{circuitikz}
+\end{LTXexample}
+
+\begin{LTXexample}[varwidth=true]
+\begin{circuitikz}[straight voltages]
+ \draw (0,0) to[battery,l_=1V, v=$u_1$, i=$i_1$] (2,0);
+\end{circuitikz}
+\end{LTXexample}
\subsubsection{American style}
-Use option \texttt{americanvoltage} or set \verb![american voltages]!.
+Use option \texttt{americanvoltage} or set \verb![american voltages]! or use the option \texttt{voltage=american}.
\begin{LTXexample}[varwidth=true]
\begin{circuitikz}[american voltages]
@@ -5485,7 +5575,7 @@ Use option \texttt{americanvoltage} or set \verb![american voltages]!.
\end{circuitikz}
\end{LTXexample}
-\subsubsection{Voltage position} It is possible to move away the arrows and the plus or minus signs with the key \texttt{voltages shift} (default value is \texttt{0}, which gives the standard position):
+\subsubsection{Voltage position}\label{sec:sub-voltage-position} It is possible to move away the arrows and the plus or minus signs with the key \texttt{voltages shift} (default value is \texttt{0}, which gives the standard position):
\begin{LTXexample}[varwidth=true]
\begin{circuitikz}[]
@@ -5503,6 +5593,15 @@ Use option \texttt{americanvoltage} or set \verb![american voltages]!.
\end{circuitikz}
\end{LTXexample}
+You can fine-tune the position of the \texttt{+} and \texttt{-} symbols and the label in independent way using \texttt{voltage/shift} (default \texttt{0.0} for the former and \texttt{voltage/american label distance} (the distance of the label form the lines of the symbols, default \texttt{1.1}) for the latter.
+
+\begin{LTXexample}[varwidth=true]
+\begin{circuitikz}[american voltages]
+ \ctikzset{voltage/american label distance=0.2, voltage/shift=2}
+ \draw (0,0) to[R, v=$v_1$, i=$i_1$] (2,0);
+\end{circuitikz}
+\end{LTXexample}
+
Notes that \texttt{american voltage} also affects batteries.
\begin{LTXexample}[varwidth=true]
@@ -5517,9 +5616,23 @@ Notes that \texttt{american voltage} also affects batteries.
\end{circuitikz}
\end{LTXexample}
+When using \texttt{american} or \texttt{straight} voltage style, the \texttt{open} component is treated differently, and the voltage is placed in the middle of the open space\footnote{Since \texttt{v1.1.2}, thank to an \href{https://github.com/circuitikz/circuitikz/issues/374}{issue opened by user \texttt{rhandley} on GitHub}.}:
+
+\begin{LTXexample}[varwidth=true]
+\begin{circuitikz}[american voltages]
+ \draw (0,1.5) -- ++(0.5,0)
+ to[open, v=$v_o$, o-o] ++(2,0) -- ++(0.5,0);
+ \draw (0,0) -- ++(0.5,0)
+ to[open, v=$v_o$, voltage=straight, *-*] ++(2,0)
+ -- ++(0.5,0);
+\end{circuitikz}
+\end{LTXexample}
+
+If you want or need to maintain the old behavior for \texttt{open} voltage, you can set the key \texttt{american open voltage} to \texttt{legacy} (the default is the new behavior, which correspond to the value \texttt{center}).
+
\subsubsection{American voltages customization}
-Since 0.9.0, you can change the font\footnote{There where a bug before, noticed by the user \texttt{dzereb} on \href{https://tex.stackexchange.com/questions/487683/odd-minus-style-when-drawing-american-voltage}{tex.stackexchange.com} which made the symbols using different fonts in a basically random way. In the same page, user \texttt{campa} found the problem. Thanks!} used by the \texttt{american voltages} style, by setting to something different from nothing the key \texttt{voltage/american font} (default: nothing, using the current font) style:
+Since 0.9.0, you can change the font\footnote{There was a bug before, noticed by the user \texttt{dzereb} on \href{https://tex.stackexchange.com/questions/487683/odd-minus-style-when-drawing-american-voltage}{tex.stackexchange.com} which made the symbols using different fonts in a basically random way. In the same page, user \texttt{campa} found the problem. Thanks!} used by the \texttt{american voltages} style, by setting to something different from nothing the key \texttt{voltage/american font} (default: nothing, using the current font) style:
\begin{LTXexample}[varwidth=true]
\begin{circuitikz}[american]
@@ -6511,6 +6624,10 @@ The best way of contributing is forking the project, adding your component in th
\section{Examples}
+Here a series of example, contributed by several people, is shown with their code.
+
+\subsection{A red diode}
+
\begin{LTXexample}[pos=t,varwidth=true]
\begin{circuitikz}[scale=1.4]\draw
(0,0) to[C, l=10<\micro\farad>] (0,2) -- (0,3)
@@ -6523,6 +6640,9 @@ The best way of contributing is forking the project, adding your component in th
;\end{circuitikz}
\end{LTXexample}
+\newpage
+\subsection{Using the (experimental) \texttt{siunitx} syntax}
+
\begin{LTXexample}[pos=t,varwidth=true]
\begin{circuitikz}[scale=1.2]\draw
(0,0) node[ground] {}
@@ -6535,9 +6655,11 @@ The best way of contributing is forking the project, adding your component in th
(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}
+;
+\end{circuitikz}
\end{LTXexample}
+
\begin{LTXexample}[pos=t,varwidth=true]
\begin{circuitikz}[scale=1.2]\draw
(0,0) node[anchor=east] {B}
@@ -6551,6 +6673,9 @@ The best way of contributing is forking the project, adding your component in th
;\end{circuitikz}
\end{LTXexample}
+\newpage
+\subsection{Photodiodes}
+
\begin{LTXexample}[pos=t,varwidth=true]
\begin{circuitikz}[scale=1]\draw
(0,0) node[transformer] (T) {}
@@ -6559,6 +6684,7 @@ The best way of contributing is forking the project, adding your component in th
;\end{circuitikz}
\end{LTXexample}
+\subsection{A Sallen-Key cell}
\begin{LTXexample}[pos=t,varwidth=true]
\begin{circuitikz}[scale=1]\draw
@@ -6572,6 +6698,9 @@ The best way of contributing is forking the project, adding your component in th
;\end{circuitikz}
\end{LTXexample}
+\newpage
+\subsection{Mixing circuits and graphs}
+
\begin{LTXexample}[pos=t,varwidth=true]
\begin{circuitikz}[scale=1.2, american]\draw
(0,2) to[I=1<\milli\ampere>] (2,2)
@@ -6597,6 +6726,9 @@ The best way of contributing is forking the project, adding your component in th
\end{circuitikz}
\end{LTXexample}
+\newpage
+\subsection{RF circuit}
+
\begin{LTXexample}[pos=t,varwidth=true]
\begin{circuitikz}[scale=1]
\ctikzset{bipoles/detector/width=.35}
@@ -6627,6 +6759,8 @@ The best way of contributing is forking the project, adding your component in th
\end{circuitikz}
\end{LTXexample}
+\subsection{A styled low noise input stage}
+
\ctikzloadstyle{romano}
\scalebox{0.707}{%
\begin{circuitikz}[american, romano circuit style]
@@ -6729,10 +6863,12 @@ The best way of contributing is forking the project, adding your component in th
} % scalebox
\end{lstlisting}
-\begin{tabular}{l}\label{ex:compatibility}
+\subsection{An example with the \texttt{compatibility} option}
+\label{ex:compatibility}
+
\IfFileExists{compatibility.pdf}
{\fbox{\includegraphics{compatibility.pdf}}}
-\\
+
\begin{lstlisting}
\documentclass{standalone}
@@ -6751,8 +6887,27 @@ The best way of contributing is forking the project, adding your component in th
to[*D](3,2);
\end{tikzpicture}
\end{document}
- \end{lstlisting}
-\end{tabular}
+\end{lstlisting}
+
+\newpage
+\subsection{3-phases block schematic}
+
+\begin{LTXexample}[varwidth=true,pos=t]
+\begin{circuitikz}[smallR/.style={european resistor, resistors/scale=0.5}]
+ \draw (0,0) node[tacdcshape, anchor=ac2](acdc){} to[smallR] ++(-2,0) -- node[circ](point){} ++(-.5,0);
+ \draw (acdc.ac1) to[nos, invert, mirror, name=switch,color=red] ++(-2,0) -- (point);
+ \draw (acdc.ac3) to[smallR] ++(-2,0)
+ -- (point)
+ to[oosourcetrans,prim=wye,sec=delta,l=transformer] ++(-1.5,0)
+ to[tmultiwire] ++(-.5,0)
+ node[gridnode, anchor=right]{};
+ \node[above=.3cm,color=red] at (switch) {fault};
+ \draw (acdc.dc1) to[smallR,l=HVDC line] ++(2,0) node[tdcacshape, anchor=dc1](dcac){};
+ \draw (acdc.dc2) -- (dcac.dc2);
+ \draw (dcac.right) to[ooosource,prim=delta,sec=delta,tert=wye,invert] ++(1.5,0)
+ to[tmultiwire] ++(.5,0) node[gridnode,anchor=left]{};
+\end{circuitikz}
+\end{LTXexample}
% % changelog.tex will be updated by makefile from CHANGELOG.md
\section{Changelog and Release Notes}