From 6f9e1680085e7bb4d258f6f8116369d122e196e1 Mon Sep 17 00:00:00 2001
From: Norbert Preining <norbert@preining.info>
Date: Mon, 16 Jan 2023 03:03:27 +0000
Subject: CTAN sync 202301160303

---
 .../doc/text-en/pgfmanual-en-library-circuits.tex  | 2236 --------------------
 1 file changed, 2236 deletions(-)
 delete mode 100644 graphics/pgf/base/doc/text-en/pgfmanual-en-library-circuits.tex

(limited to 'graphics/pgf/base/doc/text-en/pgfmanual-en-library-circuits.tex')

diff --git a/graphics/pgf/base/doc/text-en/pgfmanual-en-library-circuits.tex b/graphics/pgf/base/doc/text-en/pgfmanual-en-library-circuits.tex
deleted file mode 100644
index b46e562880..0000000000
--- a/graphics/pgf/base/doc/text-en/pgfmanual-en-library-circuits.tex
+++ /dev/null
@@ -1,2236 +0,0 @@
-% Copyright 2019 by Till Tantau and Mark Wibrow
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Free Documentation License.
-%
-% See the file doc/generic/pgf/licenses/LICENSE for more details.
-
-
-\section{Circuit Libraries}
-\label{section-library-circuits}
-
-\emph{Written and documented by Till Tantau, and Mark Wibrow. Inspired
-by the work of Massimo Redaelli.}
-
-
-\subsection{Introduction}
-
-The circuit libraries can be used to draw different kinds of electrical or
-logical circuits. There is not a single library for this, but a whole hierarchy
-of libraries that work in concert. The main design goal was to create a balance
-between ease-of-use and ease-of-extending, while creating high-quality
-graphical representations of circuits.
-%
-\begin{codeexample}[setup code,hidden]
-\tikzset{
-  % from `shape` library
-  shape example/.style= {color      = black!30,
-                         draw,
-                         fill       = yellow!30,
-                         line width =  .5cm,
-                         inner xsep = 2.5cm,
-                         inner ysep = 0.5cm}
-}
-\end{codeexample}
-
-
-\subsubsection{A First Example}
-
-\begin{codeexample}[preamble={\usetikzlibrary{circuits.ee.IEC}}]
-\begin{tikzpicture}[circuit ee IEC,x=3cm,y=2cm,semithick,
-                    every info/.style={font=\footnotesize},
-                    small circuit symbols,
-                    set resistor graphic=var resistor IEC graphic,
-                    set diode graphic=var diode IEC graphic,
-                    set make contact graphic= var make contact IEC graphic]
-  % Let us start with some contacts:
-  \foreach \contact/\y in {1/1,2/2,3/3.5,4/4.5,5/5.5}
-  {
-    \node [contact] (left contact \contact) at (0,\y) {};
-    \node [contact] (right contact \contact) at (1,\y) {};
-  }
-  \draw (right contact 1) -- (right contact 2) -- (right contact 3)
-     -- (right contact 4) -- (right contact 5);
-
-  \draw (left contact 1) to [diode] ++(down:1)
-                         to [voltage source={near start,
-                                             direction info={volt=3}},
-                             resistor={near end,ohm=3}] ++(right:1)
-                         to (right contact 1);
-  \draw (left contact 1) to [resistor={ohm=4}] (right contact 1);
-  \draw (left contact 1) to [resistor={ohm=3}] (left contact 2);
-  \draw (left contact 2) to [voltage source={near start,
-                                             direction info={<-,volt=8}},
-                             resistor={ohm=2,near end}] (right contact 2);
-  \draw (left contact 2) to [resistor={near start,ohm=1},
-                             make contact={near end,info'={[red]$S_1$}}]
-                         (left contact 3);
-  \draw (left contact 3) to [current direction'={near start,info=$\iota$},
-                             resistor={near end,info={$R=4\Omega$}}]
-                         (right contact 3);
-  \draw (left contact 4) to [voltage source={near start,
-                                             direction info={<-,volt=8}},
-                             resistor={ohm=2,near end}] (right contact 4);
-  \draw (left contact 3) to [resistor={ohm=1}] (left contact 4);
-  \draw (left contact 4) to [resistor={ohm=3}] (left contact 5);
-  \draw (left contact 5) to [resistor={ohm=4}] (right contact 5);
-  \draw (left contact 5) to [diode] ++(up:1)
-                         to [voltage source={near start,
-                                             direction info={volt=3}},
-                             resistor={near end,ohm=3}] ++(right:1)
-                         to (right contact 5);
-\end{tikzpicture}
-\end{codeexample}
-
-An important feature of the |circuits| library is that the appearance of a
-circuit can be configured in general ways and that the labels are placed
-automatically by default. Here is the graphic once more, generated from
-\emph{exactly the same source code}, with only the options of the
-|{tikzpicture}| environment replaced by
-|[rotate=-90,circuit ee IEC,x=3.25cm,y=2.25cm]|:
-%
-\begin{tikzpicture}[rotate=-90,circuit ee IEC,x=3cm,y=2.25cm]
-  % Let us start with some contacts:
-  \foreach \contact/\y in {1/1,2/2,3/3.5,4/4.5,5/5.5}
-  {
-    \node [contact] (left contact \contact) at (0,\y) {};
-    \node [contact] (right contact \contact) at (1,\y) {};
-  }
-  \draw (right contact 1) -- (right contact 2) -- (right contact 3)
-     -- (right contact 4) -- (right contact 5);
-
-  \draw (left contact 1) to [diode] ++(down:1)
-                      to [voltage source={near start,direction info={volt=3}},
-                          resistor={near end,ohm=3}] ++(right:1)
-                      to (right contact 1);
-  \draw (left contact 1) to [resistor={ohm=4}] (right contact 1);
-  \draw (left contact 1) to [resistor={ohm=3}] (left contact 2);
-  \draw (left contact 2) to [voltage source={near start,
-                                          direction info={<-,volt=8}},
-                          resistor={ohm=2,near end}] (right contact 2);
-  \draw (left contact 2) to [resistor={near start,ohm=1},
-                          make contact={near end,info'={[red]$S_1$}}] (left contact 3);
-  \draw (left contact 3) to [current direction'={near start,info=$\iota$},
-                          resistor={near end,info={$R=4\Omega$}}]
-                            (right contact 3);
-  \draw (left contact 4) to [voltage source={near start,
-                                          direction info={<-,volt=8}},
-                          resistor={ohm=2,near end}] (right contact 4);
-  \draw (left contact 3) to [resistor={ohm=1}] (left contact 4);
-  \draw (left contact 4) to [resistor={ohm=3}] (left contact 5);
-  \draw (left contact 5) to [resistor={ohm=4}] (right contact 5);
-  \draw (left contact 5) to [diode] ++(up:1)
-                      to [voltage source={near start,direction info={volt=3}},
-                          resistor={near end,ohm=3}] ++(right:1)
-                      to (right contact 5);
-\end{tikzpicture}
-
-
-\subsubsection{Symbols}
-
-A circuit typically consists of numerous electronic elements like logical gates
-or resistors or diodes that are connected by wires. In \pgfname/\tikzname, we
-use nodes for the electronic elements and normal lines for the wires.
-\tikzname\ offers a large number of different ways of positioning and
-connecting nodes in general, all of which can be used here. Additionally, the
-|circuits| library defines an additional useful |to|-path that is particularly
-useful for elements like a resistor on a line.
-
-There are many different names that are used to refer to electrical
-``elements'', so a bit of terminology standardization is useful: We will call
-such elements \emph{symbols}. A \emph{symbol shape} is a \pgfname\ shape
-declared using the |\pgfdeclareshape| command. A \emph{symbol node} is a node
-whose shape is a symbol shape.
-
-
-\subsubsection{Symbol Graphics}
-
-Symbols can be created by |\node[shape=some symbol shape]|. However, in order
-to represent some symbols correctly, just using standard \pgfname\ shapes is
-not sufficient. For instance, most symbols have a visually appealing ``default
-size'', but the size of a symbol shape depends only on the current values of
-parameters like |minimum height| or |inner xsep|.
-
-For these reasons, the circuit libraries introduce the concept of a
-\emph{symbol graphic}. This is a style that causes a |\node| to not only have
-the correct shape, but also the correct size and the correct path usage. More
-generally, this style may set up things in any way so that the ``symbol looks
-correct''. When you write, for instance, |\node[diode]|, then the style called
-|diode graphic| is used, which in turn is set to something like
-|shape=diode IEC,draw,minimum height=...|.
-
-Here is an overview of the different kinds of circuit libraries:
-%
-\begin{itemize}
-    \item The \tikzname-library |circuits| defines general keys for creating
-        circuits. Mostly, these keys are useful for defining more specialized
-        libraries.
-
-        You normally do not use this library directly since it does not define
-        any symbol graphics.
-    \item The \tikzname-library |circuits.logic| defines keys for creating
-        logical gates like and-gates or xor-gates. However, this library also
-        does not actually define any symbol graphics; this is done by two
-        sublibraries:
-        %
-        \begin{itemize}
-            \item The library |circuits.logic.US| defines symbol graphics that
-                cause the logical gates to be rendered in the ``US-style''. It
-                includes all of the above libraries and you can use this
-                library directly.
-            \item The library |circuits.logic.IEC| also defines symbol graphics
-                for logical gates, but it uses rectangular gates rather that
-                the round US-gates. This library can coexist peacefully with
-                the above library, you can change which symbol graphics are
-                used ``on the fly''.
-        \end{itemize}
-    \item The \tikzname-library |circuits.ee| defines keys for symbols from
-        electrical engineering like resistors or capacitors. Again,
-        sublibraries define the actual symbol graphics.
-        %
-        \begin{itemize}
-            \item The library |circuits.ee.IEC| defines symbol shapes that
-                follow the IEC norm.
-        \end{itemize}
-    \item The \pgfname-libraries |shapes.gates.*| define (circuit) symbol
-        shapes. However, you normally do not use these shapes directly, rather
-        you use a style that uses an appropriate symbol graphic, which in turn
-        uses one of these shapes.
-\end{itemize}
-
-Let us have a look at a simple example. Suppose we wish to create a logical
-circuit. Then we first have to decide which symbol graphics we would like to
-use. Suppose we wish to use the US-style, then we would include the library
-|circuits.logic.US|. If you wish to use IEC-style symbols, use
-|circuits.logic.IEC|. If you cannot decide, include both:
-%
-\begin{codeexample}[code only]
-\usetikzlibrary{circuits.logic.US,circuits.logic.IEC}
-\end{codeexample}
-%
-To create a picture that contains a US-style circuit you can now use the option
-|circuit logic US|. This will set up keys like |and gate| to create use an
-appropriate symbol graphic for rendering an |and gate|. Using the
-|circuit logic IEC| instead will set up |and gate| to use another symbol
-graphic.
-%
-\begin{codeexample}[preamble={\usetikzlibrary{circuits.logic.US}}]
-\begin{tikzpicture}[circuit logic US]
-  \matrix[column sep=7mm]
-  {
-    \node (i0) {0}; &                            & \\
-                    & \node [and gate] (a1) {};  & \\
-    \node (i1) {0}; &                            & \node [or gate] (o) {};\\
-                    & \node [nand gate] (a2) {}; & \\
-    \node (i2) {1}; &                            & \\
-  };
-  \draw (i0.east) -- ++(right:3mm) |- (a1.input 1);
-  \draw (i1.east) -- ++(right:3mm) |- (a1.input 2);
-  \draw (i1.east) -- ++(right:3mm) |- (a2.input 1);
-  \draw (i2.east) -- ++(right:3mm) |- (a2.input 2);
-  \draw (a1.output) -- ++(right:3mm) |- (o.input 1);
-  \draw (a2.output) -- ++(right:3mm) |- (o.input 2);
-  \draw (o.output) -- ++(right:3mm);
-\end{tikzpicture}
-\end{codeexample}
-
-\begin{codeexample}[preamble={\usetikzlibrary{circuits.logic.IEC}}]
-\begin{tikzpicture}[circuit logic IEC]
-  \matrix[column sep=7mm]
-  {
-    \node (i0) {0}; &                            & \\
-                    & \node [and gate] (a1) {};  & \\
-    \node (i1) {0}; &                            & \node [or gate] (o) {};\\
-                    & \node [nand gate] (a2) {}; & \\
-    \node (i2) {1}; &                            & \\
-  };
-  \draw (i0.east) -- ++(right:3mm) |- (a1.input 1);
-  \draw (i1.east) -- ++(right:3mm) |- (a1.input 2);
-  \draw (i1.east) -- ++(right:3mm) |- (a2.input 1);
-  \draw (i2.east) -- ++(right:3mm) |- (a2.input 2);
-  \draw (a1.output) -- ++(right:3mm) |- (o.input 1);
-  \draw (a2.output) -- ++(right:3mm) |- (o.input 2);
-  \draw (o.output) -- ++(right:3mm);
-\end{tikzpicture}
-\end{codeexample}
-
-
-\subsubsection{Annotations}
-
-An \emph{annotation} is a little extra drawing that can be added to a symbol.
-For instance, when you add two little parallel arrows pointing away from some
-electrical element, this usually means that the element is light emitting.
-
-Instead of having one symbol for ``diode'' and another for ``light emitting
-diode'', there is just one |diode| symbol, but you can add the |light emitting|
-annotation to it. This is done by passing the annotation as a parameter to the
-symbol as in the following example:
-%
-\begin{codeexample}[preamble={\usetikzlibrary{circuits.ee.IEC}}]
-\tikz [circuit ee IEC]
-  \draw (0,0) to [diode={light emitting}] (3,0)
-              to [resistor={adjustable}]  (3,2);
-\end{codeexample}
-
-
-\subsection{The Base Circuit Library}
-
-\begin{tikzlibrary}{circuits}
-    This library is a base library that is included by other circuit libraries.
-    You do not include it directly, but you will typically use some of the
-    general keys, described below.
-\end{tikzlibrary}
-
-\begin{key}{/tikz/circuits}
-  This key should be passed as an option to a picture or a scope that contains
-  a circuit. It will do some internal setups. This key is normally called by
-  more specialized keys like |circuit ee IEC|.
-\end{key}
-
-
-\subsubsection{Symbol Size}
-
-\begin{key}{/tikz/circuit symbol unit=\meta{dimension} (initially 7pt)}
-    This dimension is a ``unit'' for the size of symbols. The libraries
-    generally define the sizes of symbols relative to this dimension. For
-    instance, the longer side of an inductor is, by default, in the IEC library
-    equal to five times this \meta{dimension}. When you change this
-    \meta{dimension}, the size of all symbols will automatically change
-    accordingly.
-
-    Note, that it is still possible to overwrite the size of any particular
-    symbol. These settings apply only to the default sizes.
-    %
-\begin{codeexample}[preamble={\usetikzlibrary{circuits.ee.IEC}}]
-\begin{tikzpicture}[circuit ee IEC]
-  \draw (0,1) to [resistor] (3.5,1);
-  \draw[circuit symbol unit=14pt]
-        (0,0) to [resistor] (3.5,0);
-\end{tikzpicture}
-\end{codeexample}
-    %
-\end{key}
-
-\begin{stylekey}{/tikz/huge circuit symbols}
-    This style sets the default circuit symbol unit to |10pt|.
-\end{stylekey}
-%
-\begin{stylekey}{/tikz/large circuit symbols}
-    This style sets the default circuit symbol unit to |8pt|.
-\end{stylekey}
-%
-\begin{stylekey}{/tikz/medium circuit symbols}
-    This style sets the default circuit symbol unit to |7pt|.
-\end{stylekey}
-%
-\begin{stylekey}{/tikz/small circuit symbols}
-    This style sets the default circuit symbol unit to |6pt|.
-\end{stylekey}
-%
-\begin{stylekey}{/tikz/tiny circuit symbols}
-    This style sets the default circuit symbol unit to |5pt|.
-\end{stylekey}
-
-\begin{key}{/tikz/circuit symbol size=|width| \meta{width} |height| \meta{height}}
-    This key sets |minimum height| to \meta{height} times the current value of
-    the circuit symbol unit and the |minimum width| to \meta{width} times this
-    value. Thus, this option can be used with a node command to set the size of
-    the node as a multiple of the circuit symbol unit.
-    %
-\begin{codeexample}[preamble={\usetikzlibrary{circuits.ee.IEC}}]
-\begin{tikzpicture}[circuit ee IEC]
-  \draw (0,1) to [resistor] (2,1) to[inductor] (4,1);
-
-  \begin{scope}
-    [every resistor/.style={circuit symbol size=width 3 height 1}]
-    \draw (0,0) to [resistor] (2,0) to[inductor] (4,0);
-  \end{scope}
-\end{tikzpicture}
-\end{codeexample}
-    %
-\end{key}
-
-
-\subsubsection{Declaring New Symbols}
-
-\begin{key}{/tikz/circuit declare symbol=\meta{name}}
-    This key is used to declare a symbol. It does not cause this symbol to be
-    shown nor does it set a graphic to be used for the symbol, it simply
-    ``prepares'' several keys that can later be used to draw a symbol and to
-    configure it.
-
-    In detail, the first key that is defined is just called \meta{name}. This
-    key should be given as an option to a |node| or on a |to| path, as
-    explained below. The key will take options, which can be used to influence
-    the way the symbol graphic is rendered.
-
-    Let us have a look at an example. Suppose we want to define a symbol called
-    |foo|, which just looks like a simple rectangle. We could then say
-    %
-\begin{codeexample}[code only]
-\tikzset{circuit declare symbol=foo}
-\end{codeexample}
-    %
-    The symbol could now be used like this:
-    %
-\begin{codeexample}[code only]
-  \node [foo]       at (1,1) {};
-  \node [foo={red}] at (2,1) {};
-\end{codeexample}
-
-    However, in the above example we would not actually see anything since we
-    have not yet set up the graphic to be used by |foo|. For this, we must use
-    a key called |set foo graphic| or, generally, |set| \meta{name} |graphic|.
-    This key gets graphic options as parameter that will be set when a symbol
-    |foo| should be shown:
-    %
-\begin{codeexample}[preamble={\usetikzlibrary{circuits}}]
-\begin{tikzpicture}
-  [circuit declare symbol=foo,
-   set foo graphic={draw,shape=rectangle,minimum size=5mm}]
-
-  \node [foo]       at (1,1) {};
-  \node [foo={red}] at (2,1) {};
-\end{tikzpicture}
-\end{codeexample}
-
-    In detail, when you use the key \meta{name}=\meta{options} with a node, the
-    following happens:
-    %
-    \begin{enumerate}
-        \item The |inner sep| is set to |0.5pt|.
-        \item The following style is executed:
-            %
-            \begin{stylekey}{/tikz/every circuit symbol}
-                Use this style to set up things in general.
-            \end{stylekey}
-        \item The graphic options that have been set using |set| \meta{name}
-            |graphic| are set.
-        \item The style |every |\meta{name} is executed. You can use it to
-            configure the symbol further.
-        \item The \meta{options} are executed.
-  \end{enumerate}
-
-    The key \meta{name} will have a different effect when it is used on a |to|
-    path command inside a |circuit| environment (the |circuit| environment sets
-    up |to| paths in such a way that the use of a key declared using
-    |circuit declare symbol| is automatically detected). When \meta{name} is
-    used on a |to| path, the above actions also happen (setting the inner
-    separation, using the symbol graphic, and so on), but they are passed to
-    the key |circuit handle symbol|, which is explained next.
-\end{key}
-
-\begin{key}{/tikz/circuit handle symbol=\meta{options}}
-    This key is mostly used internally. Its purpose is to render a symbol. The
-    effect of this key differs, depending on whether it is used as the optional
-    argument of a |to| path command or elsewhere.
-
-    If the key is not used as an argument of a |to| path command, the
-    \meta{options} are simply executed.
-
-    The more interesting case happens when the key is given on a |to| path
-    command. In this case, several things happen:
-    %
-    \begin{enumerate}
-        \item The |to| path is locally changed and set to an internal path
-            (which you should not try to change) that consists mostly of a
-            single straight line.
-        \item The \meta{options} are tentatively executed with filtering
-            switched on. Everything is filtered out, except for the key |pos|
-            and also the styles |at start|, |very near start|, |near start|,
-            |midway|, |near end|, |very near end|, and |at end|. If none of
-            them is found, |midway| is used.
-        \item The filtered option is used to determine a position for the
-            symbol on the path. At the given position (with |pos=0|
-            representing the start and |pos=1| representing the end), a node
-            will be added to the path (in a manner to be described presently).
-        \item This node gets \meta{options} as its option list.
-        \item The node is added by virtue of a special |markings| decoration.
-            This means that a |mark| command is executed that causes the node
-            to be placed as a mark on the path.
-        \item The marking decoration will automatically subdivide the path and
-            cause a line to be drawn from the start of the path to the node's
-            border (at the position that lies on a line from the node's center
-            to the start of the path) and then from the node's border (at a
-            position on the other side of the node) to the end of the path.
-        \item The marking decoration will also take care of the case that
-            multiple marks are present on a path, in this case the lines from
-            and to the borders of the nodes are only between consecutive nodes.
-        \item The marking decoration will also rotate the coordinate system in
-            such a way that the $x$-axis points along the path. Thus, if you
-            use the |transform shape| option, the node will ``point along'' the
-            path.
-        \item In case a node is at |pos=0| or at |pos=1| some special code will
-            suppress the superfluous lines to the start or end of the path.
-    \end{enumerate}
-
-    The net effect of all of the above is that a node will be placed ``on the
-    path'' and the path will have a ``gap'' just large enough to encompass the
-    node. Another effect is that you can use this key multiple times on a path
-    to add several node to a path, provided they do not overlap.
-    %
-\begin{codeexample}[preamble={\usetikzlibrary{circuits}}]
-\begin{tikzpicture}[circuit]
-  \draw (0,0) to [circuit handle symbol={draw,shape=rectangle,near start},
-                  circuit handle symbol={draw,shape=circle,near end}] (3,2);
-  \end{tikzpicture}
-\end{codeexample}
-    %
-\begin{codeexample}[preamble={\usetikzlibrary{circuits}}]
-\begin{tikzpicture}[transform shape,circuit]
-  \draw (0,0) to [circuit handle symbol={draw,shape=rectangle,at start},
-                  circuit handle symbol={draw,shape=circle,near end}] (3,2);
-\end{tikzpicture}
-\end{codeexample}
-    %
-\end{key}
-
-
-\subsubsection{Pointing Symbols in the Right Direction}
-
-Unlike normal nodes, which generally should not be rotated since this will make
-their text hard to read, symbols often need to be rotated. There are two ways
-of achieving such rotations:
-%
-\begin{enumerate}
-    \item When you place a symbol on a |to| path, the graphic symbol is
-        automatically rotated such that it ``points along the path''. Here is
-        an examples that shows how the inductor shape (which looks, unrotated,
-        like this: \tikz[circuit ee IEC]\node[inductor]{};) is automatically
-        rotated around:
-        %
-\begin{codeexample}[preamble={\usetikzlibrary{circuits.ee.IEC}}]
-\tikz [circuit ee IEC]
-  \draw (3,0) to[inductor] (1,0) to[inductor] (0,2);
-\end{codeexample}
-        %
-    \item Many shapes cannot be placed ``on'' a path in this way, namely
-        whenever there are more than two possible inputs. Also, you may wish to
-        place the nodes first, possibly using a matrix, and connect them
-        afterwards. In this case, you can simply add rotations like |rotate=90|
-        to the shapes to rotate them. The following four keys make this
-        slightly more convenient:
-        %
-        \begin{key}{/tikz/point up}
-            This is the same as |rotate=90|.
-            %
-\begin{codeexample}[preamble={\usetikzlibrary{circuits.ee.IEC}}]
-\tikz [circuit ee IEC] \node [diode,point up] {};
-\end{codeexample}
-        \end{key}
-        %
-        \begin{key}{/tikz/point down}
-            This is the same as |rotate=-90|.
-            %
-\begin{codeexample}[preamble={\usetikzlibrary{circuits.ee.IEC}}]
-\tikz [circuit ee IEC] \node [diode,point down] {};
-\end{codeexample}
-        \end{key}
-        %
-        \begin{key}{/tikz/point left}
-            This is the same as |rotate=-180|.
-            %
-\begin{codeexample}[preamble={\usetikzlibrary{circuits.ee.IEC}}]
-\tikz [circuit ee IEC] \node [diode,point left] {};
-\end{codeexample}
-        \end{key}
-        %
-        \begin{key}{/tikz/point right}
-            This key has no effect.
-            %
-\begin{codeexample}[preamble={\usetikzlibrary{circuits.ee.IEC}}]
-\tikz [circuit ee IEC] \node [diode,point right] {};
-\end{codeexample}
-        \end{key}
-\end{enumerate}
-
-
-\subsubsection{Info Labels}
-
-Info labels are used to add text to a circuit symbol. Unlike normal nodes like
-a rectangle, circuit symbols typically do not have text ``on'' them, but the
-text is placed next to them (like the text ``$3\,\Omega$'' next to a resistor).
-
-\tikzname\ already provides the |label| option for this purpose. The |info|
-option is built on top of this option, but it comes in some predefined variants
-that are especially useful in conjunction with circuits.
-
-\begin{key}{/tikz/info=\opt{|[|\meta{options}|]|\meta{angle}|:|}\meta{text}}
-    This key has nearly the same effect as the |label| key, only the following
-    style is used additionally automatically:
-    %
-    \begin{stylekey}{/tikz/every info}
-        Set this style to configure the styling of info labels. Since this
-        key is \emph{not} used with normal labels, it provides an easy way
-        of changing the way info labels look without changing other
-        labels.
-    \end{stylekey}
-    %
-    The \meta{options} and \meta{angle} are passed directly to the |label|
-    command.
-    %
-\begin{codeexample}[preamble={\usetikzlibrary{circuits.ee.IEC}}]
-\begin{tikzpicture}[circuit ee IEC,every info/.style=red]
-  \node [resistor,info=$3\Omega$] {};
-\end{tikzpicture}
-\end{codeexample}
-
-    You will find a detailed discussion of the |label| option on
-    page~\pageref{label-option}.
-
-    Hint: To place some text \emph{on} the main node, use |center| as the
-    \meta{angle}:
-    %
-\begin{codeexample}[preamble={\usetikzlibrary{circuits.ee.IEC}}]
-\begin{tikzpicture}[circuit ee IEC,every info/.style=red]
-  \node [resistor,info=center:$3\Omega$] {};
-  \node [resistor,point up,info=center:$R_1$] at (2,0) {};
-\end{tikzpicture}
-\end{codeexample}
-    %
-\end{key}
-
-\begin{key}{/tikz/info'=\opt{|[|\meta{options}|]|\meta{angle}|:|}\meta{text}}
-    This key works exactly like the |info| key, only in case the \meta{angle}
-    is missing, it defaults to |below| instead of the current value of
-    |label position|, which is usually |above|. This means that when you use
-    |info|, you get a label above the node, while when you use the |info'| key
-    you get a label below the node. In case the node has been rotated, the
-    positions of the info nodes are rotated accordingly.
-    %
-\begin{codeexample}[preamble={\usetikzlibrary{circuits.ee.IEC}}]
-\begin{tikzpicture}[circuit ee IEC,every info/.style=red]
-  \draw (0,0) to[resistor={info={$3\Omega$},info'={$R_1$}}] (3,0)
-              to[resistor={info={$4\Omega$},info'={$R_2$}}] (3,2);
-\end{tikzpicture}
-\end{codeexample}
-    %
-\end{key}
-
-\begin{key}{/tikz/info sloped=\opt{|[|\meta{options}|]|\meta{angle}|:|}\meta{text}}
-    This key works like |info|, only the |transform shape| option is set when
-    the label is drawn, causing it to follow the sloping of the main node.
-    %
-\begin{codeexample}[preamble={\usetikzlibrary{circuits.ee.IEC}}]
-\begin{tikzpicture}[circuit ee IEC,every info/.style=red]
-  \draw (0,0) to[resistor={info sloped={$3\Omega$}}] (3,0)
-              to[resistor={info sloped={$4\Omega$}}] (3,2);
-\end{tikzpicture}
-\end{codeexample}
-    %
-\end{key}
-
-\begin{key}{/tikz/info' sloped=}
-    This is a combination of |info'| and |info sloped|.
-    %
-\begin{codeexample}[preamble={\usetikzlibrary{circuits.ee.IEC}}]
-\begin{tikzpicture}[circuit ee IEC,every info/.style=red]
-  \draw (0,0) to[resistor={info' sloped={$3\Omega$}}] (3,0)
-              to[resistor={info' sloped={$4\Omega$}}] (3,2);
-\end{tikzpicture}
-\end{codeexample}
-    %
-\end{key}
-
-\begin{key}{/tikz/circuit declare unit=\marg{name}\marg{unit}}
-    This key is used to declare keys that make it easy to attach physical units
-    to nodes. The idea is that instead of |info=$3\Omega$| you can write
-    |ohm=3| or instead of |info'=$5\mathrm{S}$| you can write |siemens'=5|.
-
-    In detail, four keys are defined, namely |/tikz/|\meta{name},
-    |/tikz/|\meta{name}|'|, |/tikz/|\meta{name} |sloped|, and
-    |/tikz/|\meta{name}|'| |sloped|. The arguments of all of these keys are of
-    the form \opt{|[|\meta{options}|]|\meta{angle}|:|}\meta{value} and it is
-    passed (slightly modified) to the corresponding key |info|, |info'|, |info|
-    |sloped|, or |info'| |sloped|. The ``slight modification'' is the
-    following: The text that is passed to the, say, |info| key is not
-    \meta{value}, but rather |$\mathrm{|\meta{value}\meta{unit}|}$|
-
-    This means that after you said |circuit declare unit={ohm}{\Omega}|, then
-    |ohm=5k| will have the same effect as
-    |info={[every ohm]$\mathrm{5k\Omega}$}|. Here, |every ohm| is a style that
-    allows you to configure the appearance of this unit. Since the |info| key
-    is used internally, by changing the |every info| style, you can change the
-    appearance of all units infos.
-    %
-\begin{codeexample}[preamble={\usetikzlibrary{circuits.ee.IEC}}]
-\begin{tikzpicture}[circuit ee IEC,circuit declare unit={my ohm}{O}]
-  \draw (0,0) to[resistor={my ohm' sloped=3}] (3,2);
-\end{tikzpicture}
-\end{codeexample}
-    %
-\end{key}
-
-
-\subsubsection{Declaring and Using Annotations}
-
-Annotations are quite similar to info labels. The main difference is that they
-generally cause something to be drawn by default rather than some text to be
-added (although an annotation might also add some text).
-
-Annotations can be declared using the following key:
-
-\begin{key}{/tikz/circuit declare annotation=\marg{name}\marg{distance}\marg{path}}
-    This key is used to declare an annotation named \meta{name}. Once declared,
-    it can be used as an argument of a symbol and will add the drawing in
-    \meta{path} to the symbol. In detail, the following happens:
-
-
-    \textbf{The Main Keys.}
-    Two keys called \meta{name} and \meta{name}|'| are defined. The second
-    causes the annotation to be ``mirrored and placed on the other side'' of
-    the symbol. Both of these keys may also take further keys as parameter like
-    |info| keys. Whenever the \meta{name} key is used, a local scope is opened
-    and in this scope the following things are done:
-    %
-    \begin{enumerate}
-        \item The style |every| \meta{name} is executed.
-        \item The following style is executed and then |arrows=->|:
-            %
-            \begin{stylekey}{/tikz/annotation arrow}
-                This style should set the |>| key to some desirable arrow tip.
-            \end{stylekey}
-        \item The coordinate system is shifted such that the origin is at the
-            north anchor of the symbol. (For the \meta{name}|'| key the
-            coordinate system is flipped and shifted such that the origin is at
-            the south anchor of the symbol.)
-        \item The |label distance| is locally set to \meta{distance}.
-        \item The parameter options given to the \meta{name} key are executed.
-        \item The \meta{path} is executed.
-    \end{enumerate}
-
-
-    \textbf{Usage.}
-    What all of the above amounts to is best explained by an example. Suppose
-    we wish to create an annotation that looks like a little circular arrow
-    (like \tikz \draw [->] (0,0) arc (-270:80:1ex);). We could then say:
-    %
-\begin{codeexample}[code only]
-\tikzset{circuit declare annotation=
-  {circular annotation}
-  {9pt}
-  {(0pt,8pt) arc (-270:80:3.5pt)}
-}
-\end{codeexample}
-    %
-    We can then use it like this:
-    %
-\tikzset{circuit declare annotation=
-  {circular annotation}
-  {8pt}
-  {(0pt,8pt) arc (-270:80:3.5pt)}
-}
-\begin{codeexample}[
-    preamble={\usetikzlibrary{circuits.ee.IEC}}
-    pre={\tikzset{circuit declare annotation=
-  {circular annotation}
-  {8pt}
-  {(0pt,8pt) arc (-270:80:3.5pt)}
-}}]
-\tikz[circuit ee IEC]
-  \draw (0,0) to [resistor={circular annotation}]   (3,0);
-\end{codeexample}
-    %
-    Well, not very impressive since we do not see anything. This is due to the
-    fact that the \meta{path} becomes part of a path that contains the symbol
-    node an nothing else. This path is not drawn or filled, so we do not see
-    anything. What we must do is to use an |edge| path operation:
-    %
-\begin{codeexample}[preamble={\usetikzlibrary{circuits.ee.IEC}}]
-\tikzset{circuit declare annotation={circular annotation}{9pt}
-  {(0pt,8pt) edge[to path={arc(-270:80:3.5pt)}] ()}
-}
-\tikz[circuit ee IEC]
-  \draw (0,0) to [resistor={circular annotation}]   (3,0)
-              to [capacitor={circular annotation'}] (3,2);
-\end{codeexample}
-    %
-    The \meta{distance} is important for the correct placement of additional
-    |info| labels. When an annotation is present, the info labels may need to
-    be moved further away from the symbol, but not always. For this reason, an
-    annotation defines an additional \meta{distance} that is applied to all
-    info labels given as parameters to the annotation. Here is an example, that
-    shows the difference:
-    %
-\tikzset{circuit declare annotation={circular annotation}{9pt}
-  {(0pt,8pt) edge[to path={arc (-270:80:3.5pt)}] ()}
-}
-\begin{codeexample}[preamble={\usetikzlibrary{circuits.ee.IEC}}
-    pre={\tikzset{circuit declare annotation=
-  {circular annotation}
-  {8pt}
-  {(0pt,8pt) arc (-270:80:3.5pt)}
-}}]
-\tikz[circuit ee IEC]
-  \draw (0,0) to [resistor={circular annotation,ohm=5}]   (2,0)
-              to [resistor={circular annotation={ohm=5}}] (4,0);
-\end{codeexample}
-    %
-\end{key}
-
-
-\subsubsection{Theming Symbols}
-\label{section-theming-symbols}
-
-For each symbol, a certain graphical representation is chosen to actually show
-the symbol. You can modify this graphical representation in several ways:
-%
-\begin{itemize}
-    \item You can select a different library and use a different |circuit ...|
-        key. This will change all graphics used for the symbols.
-    \item You can generally change the size of graphic symbols by setting
-        |circuit size unit| to a different value or using a key like
-        |small circuit symbols|.
-    \item You can add options to the graphics used by symbols either globally
-        by setting the |every circuit| |symbol| style or locally by setting the
-        |every| \meta{name} style, where \meta{name} is the name of a symbol.
-        For instance, in the following picture the symbols are ridiculously
-        thick and resistors are red.
-        %
-\begin{codeexample}[preamble={\usetikzlibrary{circuits.ee.IEC}}]
-\begin{tikzpicture}
-  [circuit ee IEC,
-   every circuit symbol/.style={ultra thick},
-   every resistor/.style={red}]
-
-  \draw (0,0) to [inductor] ++(right:3) to [resistor] ++(up:2);
-\end{tikzpicture}
-\end{codeexample}
-        %
-    \item You can selectively change the graphic used for a symbol by saying
-        |set resistor graphic=|.
-    \item You can change one or more of the following styles:
-        %
-        \begin{stylekey}{/tikz/circuit symbol open (initially draw)}
-            This style is used with symbols that consist of lines that surround
-            some area. For instance, the IEC version of a resistor is an open
-            symbol.
-            %
-\begin{codeexample}[preamble={\usetikzlibrary{circuits.ee.IEC}}]
-\tikz [circuit ee IEC,
-       circuit symbol open/.style={thick,draw,fill=yellow}]
-  \draw (0,0) to [inductor] ++(right:3) to [resistor] ++(up:2);
-\end{codeexample}
-        \end{stylekey}
-        %
-        \begin{stylekey}{/tikz/circuit symbol filled (initially {draw,fill=black})}
-            This style is used with symbols that are completely filled. For
-            instance, the variant IEC version of an inductor is a filled, black
-            rectangle.
-        \end{stylekey}
-        %
-        \begin{stylekey}{/tikz/circuit symbol lines (initially draw)}
-            This style is used with symbols that consist only of lines that do
-            not surround anything. Examples are a capacitor.
-            %
-\begin{codeexample}[preamble={\usetikzlibrary{circuits.ee.IEC}}]
-\tikz [circuit ee IEC,
-       circuit symbol lines/.style={thick,draw=red}]
-  \draw (0,0) to [capacitor] ++(right:3) to [resistor] ++(up:2);
-\end{codeexample}
-        \end{stylekey}
-        %
-        \begin{stylekey}{/tikz/circuit symbol wires (initially draw)}
-            This style is used for symbols that consist only of ``wires''. The
-            difference to the previous style is that a symbol consisting of
-            wires will look strange when the lines are thicker than the lines
-            of normal wires, while for symbols consisting of lines (but not
-            wires) it may look nice to make them thicker. An example is the
-            |make contact| symbol.
-
-            Compare
-            %
-\begin{codeexample}[preamble={\usetikzlibrary{circuits.ee.IEC}}]
-\tikz [circuit ee IEC,circuit symbol lines/.style={draw,very thick}]
-  \draw (0,0) to [capacitor={near start},
-                  make contact={near end}] (3,0);
-\end{codeexample}
-            %
-            to
-            %
-\begin{codeexample}[preamble={\usetikzlibrary{circuits.ee.IEC}}]
-\tikz [circuit ee IEC,circuit symbol wires/.style={draw,very thick}]
-  \draw (0,0) to [capacitor={near start},
-                  make contact={near end}] (3,0);
-\end{codeexample}
-        \end{stylekey}
-\end{itemize}
-
-All circuit environments like |circuit logic IEC| mainly use options like
-|set and gate graphic=...| to set up the graphics used for a certain symbol. It
-turns out that graphic hidden in the ``|...|'' part is also always available as
-a separate style, whose name contains the library's initials. For instance, the
-|circuit logic IEC| option actually contains the following command:
-%
-\begin{codeexample}[code only]
-  set and gate graphic = and gate IEC graphic,
-\end{codeexample}
-%
-The |and gate IEC graphic| style, in turn, is defined as follows:
-%
-\begin{codeexample}[code only]
-\tikzset{and gate IEC graphic/.style=
-  {
-    circuit symbol open,
-    circuit symbol size=width 2.5 height 4,
-    shape=and gate IEC,
-    inner sep=.5ex
-  }
-}
-\end{codeexample}
-
-Normally, you do not need to worry about this, since you will not need to
-access a style like |and gate IEC graphic| directly; you will only use the
-|and gate| key. However, sometimes libraries define \emph{variants} of a
-graphic; for instance, there are two variants for the resistor graphic in the
-IEC library. In this case you can set the graphic for the resistor to this
-variant (or back to the original) by saying |set resistor graphic| yourself:
-%
-\begin{codeexample}[preamble={\usetikzlibrary{circuits.ee.IEC}}]
-\begin{tikzpicture}[circuit ee IEC]
-  % Standard resistor
-  \draw (0,2) to [resistor] (3,2);
-
-  % Var resistor
-  \begin{scope}[set resistor graphic=var resistor IEC graphic]
-    \draw (0,1) to [resistor] (3,1);
-
-    % Back to original
-    \draw [set resistor graphic=resistor IEC graphic]
-      (0,0) to [resistor] (3,0);
-  \end{scope}
-\end{tikzpicture}
-\end{codeexample}
-
-
-\subsection{Logical Circuits}
-
-\subsubsection{Overview}
-
-A \emph{logical circuit} is a circuit that contains what we call \emph{logical
-gates} like an |and gate| or an |xor gate|. The logical libraries are intended
-to make it easy to draw such circuits.
-
-In the following, we first have a look at the different libraries that can be
-used in principle and how the symbols look like. Then we have a more detailed
-look at how the symbols are used. Finally, we discuss the implementation
-details.
-
-There are different ways of depicting logical gates, which is why there are
-different (sub-)libraries for drawing them. They provide the necessary
-graphical representations of the symbols declared in the following library:
-
-\begin{tikzlibrary}{circuits.logic}
-    This library declares the logical gate symbols, but does not provide the
-    symbol graphics. The library also defines the following key which, however,
-    is also only used indirectly, namely by other libraries:
-    %
-    \begin{key}{/tikz/circuit logic}
-        This style calls the keys |circuit| (which internally calls
-        |every circuit|, then it defines the |inputs| key and it calls the
-        |every circuit logic| key.
-        %
-        \begin{key}{/tikz/inputs=\meta{inputs}}
-            This key is defined only inside the scope of a |circuit logic|.
-            There, it has the same effect as |logic gate inputs|, described on
-            page~\pageref{logic-gate-inputs}.
-        \end{key}
-        %
-        \begin{stylekey}{/tikz/every circuit logic}
-            Use this key to configure the appearance of logical circuits.
-        \end{stylekey}
-    \end{key}
-\end{tikzlibrary}
-
-Since the |circuits.logic| library does not define any actual graphics, you need
-to use one of the following libraries, instead:
-
-\begin{tikzlibrary}{circuits.logic.IEC}
-    This library provides graphics based on gates recommended by the
-    International Electrotechnical Commission.  When you include this library,
-    you can use the following key to set up a scope that contains a logical
-    circuit where the gates are shown in this style.
-
-    \begin{key}{/tikz/circuit logic IEC}
-        This key calls |circuit logic| and installs the IEC-like graphics for
-        the logical symbols like |and gate|.
-
-        As explained in Section~\ref{section-theming-symbols}, for each graphic
-        symbol of the library there is also a style that stores this particular
-        appearance. These keys are called |and gate IEC graphic|,
-        |or gate IEC graphic|, and so on.
-        %
-\begin{codeexample}[preamble={\usetikzlibrary{circuits.logic.IEC}}]
-\begin{tikzpicture}[circuit logic IEC,
-                    every circuit symbol/.style={
-                      logic gate IEC symbol color=black,
-                      fill=blue!20,draw=blue,very thick}]
-  \matrix[column sep=7mm]
-  {
-    \node (i0) {0}; &                            & \\
-                    & \node [and gate] (a1) {};  & \\
-    \node (i1) {0}; &                            & \node [or gate] (o) {};\\
-                    & \node [nand gate] (a2) {}; & \\
-    \node (i2) {1}; &                            & \\
-  };
-  \draw (i0.east) -- ++(right:3mm) |- (a1.input 1);
-  \draw (i1.east) -- ++(right:3mm) |- (a1.input 2);
-  \draw (i1.east) -- ++(right:3mm) |- (a2.input 1);
-  \draw (i2.east) -- ++(right:3mm) |- (a2.input 2);
-  \draw (a1.output) -- ++(right:3mm) |- (o.input 1);
-  \draw (a2.output) -- ++(right:3mm) |- (o.input 2);
-  \draw (o.output) -- ++(right:3mm);
-\end{tikzpicture}
-\end{codeexample}
-    \end{key}
-\end{tikzlibrary}
-
-\begin{tikzlibrary}{circuits.logic.US}
-    This library provides graphics showing ``American'' logic gates. It defines
-    the following key:
-
-    \begin{key}{/tikz/circuit logic US}
-        This style calls |circuit logic| and installs US-like graphics for the
-        logical symbols like |and gate|. For instance, it says
-        %
-\begin{codeexample}[code only]
-set and gate graphic = and gate US graphic
-\end{codeexample}
-
-        Here is an example:
-        %
-\begin{codeexample}[preamble={\usetikzlibrary{circuits.logic.CDH}}]
-\begin{tikzpicture}[circuit logic CDH,
-                    tiny circuit symbols,
-                    every circuit symbol/.style={
-                      fill=white,draw}]
-  \matrix[column sep=7mm]
-  {
-    \node (i0) {0}; &                            & \\
-                    & \node [and gate] (a1) {};  & \\
-    \node (i1) {0}; &                            & \node [or gate] (o) {};\\
-                    & \node [nand gate] (a2) {}; & \\
-    \node (i2) {1}; &                            & \\
-  };
-  \draw (i0.east) -- ++(right:3mm) |- (a1.input 1);
-  \draw (i1.east) -- ++(right:3mm) |- (a1.input 2);
-  \draw (i1.east) -- ++(right:3mm) |- (a2.input 1);
-  \draw (i2.east) -- ++(right:3mm) |- (a2.input 2);
-  \draw (a1.output) -- ++(right:3mm) |- (o.input 1);
-  \draw (a2.output) -- ++(right:3mm) |- (o.input 2);
-  \draw (o.output) -- ++(right:3mm);
-\end{tikzpicture}
-\end{codeexample}
-    \end{key}
-\end{tikzlibrary}
-
-\begin{tikzlibrary}{circuits.logic.CDH}
-    This library provides graphics based on the logic symbols used in A. Croft,
-    R. Davidson, and M. Hargreaves (1992),  \emph{Engineering Mathematics},
-    Addison-Wesley, 82--95. They are identical to the US-style symbols, except
-    for the and- and nand-gates.
-
-    \begin{key}{/tikz/circuit logic CDH}
-        This key calls |circuit logic US| and installs the two special and- and
-        nand-gates, that is, it uses |set and gate graphic| with
-        |and gate CDH graphic| and likewise for nand-gates.
-    \end{key}
-\end{tikzlibrary}
-
-Inside |circuit logic XYZ| scopes, you can now use the keys shown in
-Section~\ref{section-logic-symbols}. We have a more detailed look at one of
-them, all the other work the same way:
-
-\begin{key}{/tikz/and gate}
-    This key should be passed to a |node| command. It will cause the node to
-    ``look like'' an |and gate|, where the exact appearance of the gate is
-    dictated by the which circuit environment is used. To further configure the
-    appearance of the |and gate|, see Section~\ref{section-theming-symbols}.
-    %
-\begin{codeexample}[preamble={\usetikzlibrary{circuits.logic.IEC}}]
-\tikz [circuit logic IEC] \node [and gate] {$A$};
-\end{codeexample}
-    %
-\begin{codeexample}[preamble={\usetikzlibrary{circuits.logic.US}}]
-\tikz [circuit logic US]
-{
-  \node [and gate,point down] {$A$};
-  \node [and gate,point down,info=center:$A$] at (1,0) {};
-}
-\end{codeexample}
-
-    \medskip\textbf{Inputs.}
-    Multiple inputs can be specified for a logic gate (provided they support
-    multiple inputs: a not gate -- also known as an inverter -- does not).
-    However, there is an upper limit for the number of inputs which has been
-    set to 1024, which should be \emph{way} more than would ever be needed.
-
-    The following key is used to configure the inputs. It is available only
-    inside a |circuit logic| environment.
-
-    \begin{key}{/tikz/inputs=\meta{input list} (initially \char`\{normal,normal\char`\})}
-        If a gate has $n$ inputs, the \meta{input list} should consists of $n$
-        letters, each being |i| for ``inverted'' or |n| for ``normal''.
-        Inverted gates will be indicated by a little circle. In any case the
-        anchors for the inputs will be set up appropriately, numbered from top
-        to bottom |input 1|, |input 2|, \ldots and so on. If the gate only
-        supports one input the anchor is simply called |input| with no
-        numerical index.
-        %
-\begin{codeexample}[preamble={\usetikzlibrary{circuits.logic.IEC}}]
-\begin{tikzpicture}[circuit logic IEC]
-  \node[and gate,inputs={inini}] (A) {};
-  \foreach \a in {1,...,5}
-    \draw (A.input \a -| -1,0) -- (A.input \a);
-  \draw (A.output) -- ++(right:5mm);
-\end{tikzpicture}
-\end{codeexample}
-    \end{key}
-
-    (This key is just a shorthand for |logic gate inputs|, described in detail
-    on page~\pageref{logic-gate-inputs}. There you will also find descriptions
-    of how to configure the size of the inverted circles and the way the symbol
-    size increases when there are too many inputs.)
-
-    \textbf{Output.}
-    Every logic gate has one anchor called |output|.
-\end{key}
-
-
-\subsubsection{Symbols: The Gates}
-\label{section-logic-symbols}
-
-The following table shows which symbols are declared by the main
-|circuits.logic| library and their appearance in the different sublibraries.
-\medskip
-
-\def\gateexamples#1{%
-  \texttt{#1}
-  \indexkey{#1} &
-  \tikz[baseline,circuit logic IEC] \node[#1,label=] {}; &
-  \tikz[baseline,circuit logic US]  \node[#1] {}; &
-  \tikz[baseline,circuit logic CDH] \node[#1] {};
-}
-\begin{tabular}{lccc}
-  \emph{Key} & \emph{Appearance inside} & \emph{Appearance inside} & \emph{Appearance inside} \\
-      & |circuit logic IEC| & |circuit logic US| & |circuit logic CDH| \\
-  \gateexamples{/tikz/and gate}\\
-  \gateexamples{/tikz/nand gate}\\
-  \gateexamples{/tikz/or gate}\\
-  \gateexamples{/tikz/nor gate}\\
-  \gateexamples{/tikz/xor gate}\\
-  \gateexamples{/tikz/xnor gate}\\
-  \gateexamples{/tikz/not gate}\\
-  \gateexamples{/tikz/buffer gate}
-\end{tabular}
-
-
-\subsubsection{Implementation: The Logic Gates Shape Library}
-
-The previous sections described the \tikzname\ interface for creating logical
-circuits. In this section we take a closer look at the underlying \pgfname\
-libraries.
-
-Just as there are several \tikzname\ circuit libraries, there are two
-underlying \pgfname\ shape libraries, one for creating US-style gates and one
-for IEC-style gates. These libraries define \emph{shapes} only. It is the job
-of the circuit libraries to ``theme'' them so that they ``look nice''. However,
-in principle, you can also use these shapes directly.
-
-Let us begin with the base library that defines the handling of inputs.
-
-\begin{pgflibrary}{shapes.gates.logic}
-    This library defines common keys used by all logical gate shapes.
-
-    \begin{key}{/pgf/logic gate inputs=\meta{input list} (initially \char`\{normal,normal\char`\})}
-    \label{logic-gate-inputs}%
-        Specify the inputs for the logic gate. The keyword |inverted| indicates
-        an inverted input which will mean \pgfname{} will draw a circle
-        attached to the main shape of the logic gate. Any keyword that is not
-        |inverted| will be treated as a ``normal'' or ``non-inverted'' input
-        (however, for readability, you may wish to use |normal| or
-        |non-inverted|), and \pgfname{} will not draw the circle. In both cases
-        the anchors for the inputs will be set up appropriately, numbered from
-        top to bottom |input 1|, |input 2|, \ldots and so on. If the gate only
-        supports one input the anchor is simply called |input| with no
-        numerical index.
-        %
-\begin{codeexample}[preamble={\usetikzlibrary{circuits.logic.IEC}}]
-\begin{tikzpicture}[minimum height=0.75cm]
-  \node[and gate IEC, draw, logic gate inputs={inverted, normal, inverted}]
-    (A) {};
-  \foreach \a in {1,...,3}
-    \draw (A.input \a -| -1,0) -- (A.input \a);
-  \draw (A.output) -- ([xshift=0.5cm]A.output);
-\end{tikzpicture}
-\end{codeexample}
-
-        For multiple inputs it may be somewhat unwieldy to specify a long list,
-        thus, the following ``shorthand'' is permitted (this is an extension of
-        ideas due to Jürgen Werber and Christoph Bartoschek): Using |i| for
-        inverted and |n| for normal inputs, \meta{input list} can be specified
-        \emph{without the commas}. So, for example, |ini| is equivalent to
-        |inverted, normal, inverted|.
-        %
-\begin{codeexample}[preamble={\usetikzlibrary{circuits.logic.US}}]
-\begin{tikzpicture}[minimum height=0.75cm]
-  \node[or gate US, draw,logic gate inputs=inini] (A) {};
-  \foreach \a in {1,...,5}
-    \draw (A.input \a -| -1,0) -- (A.input \a);
-  \draw (A.output) -- ([xshift=0.5cm]A.output);
-\end{tikzpicture}
-\end{codeexample}
-    \end{key}
-
-    The height of the gate may be increased to accommodate the number of
-    inputs. In fact, it depends on three variables: $n$, the number of inputs,
-    $r$, the radius of the circle used to indicate an inverted input and $s$,
-    the distance between the centers of the inputs. The default height is then
-    calculated according to the expression $(n+1)\times\max(2r,s)$. This then
-    may be increased to accommodate the node contents or any minimum size
-    specifications.
-
-    The radius of the inverted input circle and the distance between the
-    centers of the inputs can be customized using the following keys:
-
-    \begin{key}{/pgf/logic gate inverted radius=\meta{length} (initially 2pt)}
-        Set the radius of the circle that is used to indicate inverted inputs.
-        This is also the radius of the circle used for the inverted output of
-        the |nand|, |nor|, |xnor| and |not| gates.
-        %
-\begin{codeexample}[preamble={\usetikzlibrary{circuits.logic.CDH}}]
-\begin{tikzpicture}[minimum height=0.75cm]
-  \tikzset{every node/.style={shape=nand gate CDH, draw, logic gate inputs=ii}}
-  \node[logic gate inverted radius=2pt] {A};
-  \node[logic gate inverted radius=4pt] at (0,-1) {B};
-\end{tikzpicture}
-\end{codeexample}
-        %
-    \end{key}
-
-    \begin{key}{/pgf/logic gate input sep=\meta{length} (initially .125cm)}
-        Set the distance between the \emph{centers} of the inputs to the logic
-        gate.
-        %
-\begin{codeexample}[preamble={\usetikzlibrary{circuits.logic.IEC}}]
-\begin{tikzpicture}[minimum size=0.75cm]
-  \draw [help lines] grid (3,2);
-  \tikzset{every node/.style={shape=and gate IEC, draw, logic gate inputs=ini}}
-  \node[logic gate input sep=0.33333cm] at (1,1)(A) {A};
-  \node[logic gate input sep=0.5cm]     at (3,1) (B) {B};
-  \foreach \a in {1,...,3}
-    \draw (A.input \a -| 0,0) -- (A.input \a)
-          (B.input \a -| 2,0) -- (B.input \a);
-\end{tikzpicture}
-\end{codeexample}
-        %
-    \end{key}
-
-    \pgfname{} will increase the size of the logic gate to accommodate the
-    number of inputs, and the size of the inverted radius and the separation
-    between the inputs. However with all shapes in this library, any increase
-    in size (including any minimum size requirements) will be applied so that
-    the default aspect ratio is unaltered. This means that changing the height
-    will change the width and vice versa.
-\end{pgflibrary}
-
-
-\subsubsection{Implementation: The US-Style Logic Gates Shape Library}
-
-\begin{pgflibrary}{shapes.gates.logic.US}
-    This library provides ``American'' logic gate shapes whose names are
-    suffixed with the identifier |US|. Additionally, alternative |and| and
-    |nand| gates are provided which are based on the logic symbols used in A.
-    Croft, R. Davidson, and M. Hargreaves (1992), \emph{Engineering
-    Mathematics}, Addison-Wesley, 82--95. These two shapes are suffixed with
-    |CDH|.
-
-    The ``compass point'' anchors apply to the main part of the shape and do
-    not include any inverted inputs or outputs. This library provides an
-    additional feature to facilitate the relative positioning of logic gates:
-
-    \begin{key}{/pgf/logic gate anchors use bounding box=\meta{boolean} (initially false)}
-        When set to |true| this key will ensure that the compass point anchors
-        use the bounding rectangle of the main shape, which, ignore any
-        inverted inputs or outputs, but includes any |outer sep|. This
-        \emph{only} affects the compass point anchors and is not set on a shape
-        by shape basis: whether the bounding box is used is determined by value
-        of this key when the anchor is accessed.
-        %
-\begin{codeexample}[preamble={\usetikzlibrary{circuits.logic.US}}]
-\begin{tikzpicture}[minimum height=1.5cm]
-  \node[xnor gate US, draw, gray!50,line width=2pt] (A) {};
-  \foreach \x/\y/\z in {false/blue/1pt, true/red/2pt}
-    \foreach \a in {north, south, east, west, north east,
-      south east, north west, south west}
-      \draw[logic gate anchors use bounding box=\x, color=\y]
-        (A.\a) circle(\z);
-\end{tikzpicture}
-\end{codeexample}
-        %
-    \end{key}
-
-    The library defines a number of shapes. For each shape the allowed number
-    of inputs is also shown:
-    %
-    \begin{itemize}
-        \item |and gate US|, two or more inputs
-        \item |and gate CDH|, two or more inputs
-        \item |nand gate US|, two or more inputs
-        \item |nand gate CDH|, two or more inputs
-        \item |or gate US|, two or more inputs
-        \item |nor gate US|, two or more Inputs
-        \item |xor gate US|, two inputs
-        \item |xnor gate US|, two inputs
-        \item |not gate US|, one input
-        \item |buffer gate US|, one input
-    \end{itemize}
-
-    In the following, we only have a detailed look at the anchors defined by
-    one of them. We choose the |nand gate US| because it shows all the
-    ``interesting'' anchors.
-
-    \begin{shape}{nand gate US}
-        This shape is a nand gate, which supports two or more inputs. If less
-        than two inputs are specified an error will result. The anchors for
-        this gate with two non-inverted inputs (using the normal compass point
-        anchors) are shown below. Anchor |30| is an example of a border anchor.
-        %
-\begin{codeexample}[preamble={\usetikzlibrary{circuits.logic.US}}]
-\Huge
-\begin{tikzpicture}
-  \node[name=s,shape=nand gate US,shape example, inner sep=0cm,
-  logic gate inputs={in},
-  logic gate inverted radius=.5cm] {Nand Gate\vrule width1pt height2cm};
-  \foreach \anchor/\placement in
-    {center/above, text/above, 30/above right,
-     mid/right, mid east/left, mid west/above,
-     base/below, base east/below, base west/left,
-     north/above, south/below, east/above, west/above,
-     north east/above, south east/below, south west/below, north west/above,
-     output/right, input 1/above, input 2/below}
-     \draw[shift=(s.\anchor)] plot[mark=x] coordinates{(0,0)}
-       node[\placement] {\scriptsize\texttt{(s.\anchor)}};
-\end{tikzpicture}
-\end{codeexample}
-
-        (For the definition of the |shape example| style, see
-        Section~\ref{section-libs-shapes}.)
-    \end{shape}
-\end{pgflibrary}
-
-
-\subsubsection{Implementation: The IEC-Style Logic Gates Shape Library}
-
-\begin{pgflibrary}{shapes.gates.logic.IEC}
-    This library provides rectangular logic gate shapes. These shapes are
-    suffixed with |IEC| as they are based on gates recommended by the
-    International Electrotechnical Commission.
-
-    By default each gate is drawn with a symbol, $\char`\&$ for |and| and
-    |nand| gates, $\geq1$ for |or| and |nor| gates, $1$ for |not| and |buffer|
-    gates, and $=1$ for |xor| and |xnor| gates. These symbols are drawn
-    automatically (internally they are drawn using the ``foreground'' path),
-    and are not strictly speaking part of the node contents. However, the gate
-    is enlarged to make sure the symbols are within the border of the node. It
-    is possible to change the symbols and their position within the node using
-    the following keys:
-
-    \begin{key}{/pgf/and gate IEC symbol=\meta{text} (initially \char`\\char\char`\`\char`\\\char`\&)}
-        Set the symbol for the |and gate|. Note that if the node is filled,
-        this color will be used for the symbol, making it invisible, so it will
-        be necessary set \meta{text} to something like |\color{black}\char`\&|.
-        Alternatively, the |logic gate IEC symbol color| key can be used to set
-        the color of all symbols simultaneously.
-
-        In \tikzname, when the |use IEC style logic gates| key has been used,
-        this key can be replaced by |and gate symbol|.
-    \end{key}
-
-    \begin{key}{/pgf/nand gate IEC symbol=\meta{text} (initially \char`\\char\char`\`\char`\\\char`\&)}
-        Set the symbol for the |nand gate|. In \tikzname, when the
-        |use IEC style logic gates| key has been used, this key can be replaced
-        by |nand gate symbol|.
-    \end{key}
-
-    \begin{key}{/pgf/or gate IEC symbol=\meta{text} (initially \char`\$\char`\\geq1\char`\$)}
-        Set the symbol for the |or gate|. In \tikzname, when the
-        |use IEC style logic gates| key has been used, this key can be replaced
-        by |or gate symbol|.
-    \end{key}
-
-    \begin{key}{/pgf/nor gate IEC symbol=\meta{text} (initially \char`\$\char`\\geq1\char`\$)}
-        Set the symbol for the |nor gate|. In \tikzname, when the
-        |use IEC style logic gates| key has been used, this key can be replaced
-        by |nor gate symbol|.
-    \end{key}
-
-    \begin{key}{/pgf/xor gate IEC symbol=\meta{text} (initially \char`\{\char`\$=1\char`\$\char`\})}
-        Set the symbol for the |xor gate|. Note the necessity for braces, as
-        the symbol contains |=|. In \tikzname, when the
-        |use IEC style logic gates| key has been used, this key can be replaced
-        by |xor gate symbol|.
-    \end{key}
-
-    \begin{key}{/pgf/xnor gate IEC symbol=\meta{text} (initially  \char`\{\char`\$=1\char`\$\char`\})}
-        Set the symbol for the |xnor gate|. In \tikzname, when the
-        |use IEC style logic gates| key has been used, this key can be replaced
-        by |xnor gate symbol|.
-    \end{key}
-
-    \begin{key}{/pgf/not gate IEC symbol=\meta{text} (initially 1)}
-        Set the symbol for the |not gate|. In \tikzname, when the
-        |use IEC style logic gates| key has been used, this key can be replaced
-        by |not gate symbol|.
-    \end{key}
-
-    \begin{key}{/pgf/buffer gate IEC symbol=\meta{text} (initially 1)}
-        Set the symbol for the |buffer gate|. In \tikzname, when the
-        |use IEC style logic gates| key has been used, this key can be replaced
-        by |buffer gate symbol|.
-    \end{key}
-
-    \begin{key}{/pgf/logic gate IEC symbol align=\meta{align} (initially top)}
-        Set the alignment of the logic gate symbol (in \tikzname, when the
-        |use IEC style logic gates| key has been used, |IEC| can be omitted).
-        The specification in \meta{align} is a comma separated list from |top|,
-        |bottom|, |left| or |right|. The distance between the border of the
-        node and the outer edge of the symbol is determined by the values of
-        the |inner xsep| and |inner ysep|.
-        %
-\begin{codeexample}[preamble={\usetikzlibrary{shapes.gates.logic.IEC}}]
-\begin{tikzpicture}[minimum size=1cm, use IEC style logic gates]
-    \tikzset{every node/.style={nor gate, draw}}
-  \node (A) at (0,1.5) {};
-  \node [logic gate symbol align={bottom, right}] (B) at (0,0) {};
-  \foreach \g in {A, B}{
-    \foreach \i in {1,2}
-      \draw ([xshift=-0.5cm]\g.input \i) -- (\g.input \i);
-    \draw (\g.output) -- ([xshift=0.5cm]\g.output);
-  }
-\end{tikzpicture}
-\end{codeexample}
-        %
-    \end{key}
-
-    \begin{key}{/pgf/logic gate IEC symbol color=\meta{color}}
-        This key sets the color for all symbols simultaneously. This color can
-        be overridden on a case by case basis by specifying a color when
-        setting the symbol text.
-    \end{key}
-
-    The library defines the following shapes:
-    %
-    \begin{itemize}
-        \item |and gate IEC|, two or more inputs
-        \item |nand gate IEC|, two or more inputs
-        \item |or gate IEC|, two or more inputs
-        \item |nor gate IEC|, two or more inputs
-        \item |xor gate IEC|, two inputs
-        \item |xnor gate IEC|, two inputs
-        \item |not gate IEC|, one input
-        \item |buffer gate IEC|, one input
-    \end{itemize}
-
-    Again, we only have a look at the nand-gate in more detail:
-
-    \begin{shape}{nand gate IEC}
-        This shape is a nand gate. It supports two or more inputs. If less than
-        two inputs are specified an error will result. The anchors for this
-        gate with two inverted inputs are shown below. Anchor |30| is an
-        example of a border anchor.
-        %
-\begin{codeexample}[preamble={\usetikzlibrary{circuits.logic.IEC}}]
-\Huge
-\begin{tikzpicture}
-  \node[name=s,shape=nand gate IEC ,shape example, inner xsep=1cm, inner ysep=1cm,
-    minimum height=6cm, nand gate IEC symbol=\color{black!30}\char`\&,
-    logic gate inputs={in},
-    logic gate inverted radius=0.65cm]
-  {Nand Gate\vrule width1pt height2cm};
-  \foreach \anchor/\placement in
-    {center/above, text/above, 30/above right,
-     mid/right, mid east/left, mid west/above,
-     base/below, base east/below, base west/left,
-     north/above, south/below, east/above, west/above,
-     north east/above, south east/below, south west/below, north west/above,
-     output/right, input 1/above, input 2/below}
-     \draw[shift=(s.\anchor)] plot[mark=x] coordinates{(0,0)}
-       node[\placement] {\scriptsize\texttt{(s.\anchor)}};
-\end{tikzpicture}
-\end{codeexample}
-    \end{shape}
-\end{pgflibrary}
-
-
-\subsection{Electrical Engineering Circuits}
-
-\subsubsection{Overview}
-
-An \emph{electrical engineering circuit} contains symbols like resistors or
-capacitors or voltage sources and annotations like the two arrows pointing
-toward an element whose behaviour is light dependent. The electrical
-engineering libraries, abbreviated ee-libraries, provide such symbols and
-annotations.
-
-Just as for logical gates, there are different ways of drawing ee-symbols.
-Currently, there is one main library for drawing circuits, which uses the
-graphics from the International Electrotechnical Commission, but you can add
-your own libs. This is why, just as for logical gates, there is a base library
-and more specific libraries.
-
-\begin{tikzlibrary}{circuits.ee}
-    This library declares the ee symbols, but (mostly) does not provide the
-    symbol graphics, which is left to the sublibraries. Just like the logical
-    gates library, a key is defined that is normally only used internally:
-    %
-    \begin{key}{/tikz/circuit ee}
-        This style calls the keys |circuit| (which internally calls
-        |every circuit| and the following style:
-        %
-        \begin{stylekey}{/tikz/every circuit ee}
-            Use this key to configure the appearance of logical circuits.
-        \end{stylekey}
-    \end{key}
-
-    The library also declares some standard annotations and units.
-\end{tikzlibrary}
-
-As for logical circuits, to draw a circuit the first step is to include a
-library containing the symbols graphics. Currently, you have to include
-|circuits.ee.IEC|.
-
-\begin{tikzlibrary}{circuits.ee.IEC}
-    When this library is loaded, you can use the following style:
-    %
-    \begin{key}{/tikz/circuit ee IEC}
-        This style calls |circuit ee| and installs the IEC-like graphics for
-        the logical symbols like |resistor|.
-    \end{key}
-\end{tikzlibrary}
-
-Inside the |circuit ee IEC| scope, you can now use the keys for symbols, units,
-and annotations listed in the later sections. We have a more detailed look at
-one of each of them, all the others work the same way.
-
-Let us start with an example of a symbol: the resistor symbol. The other
-predefined symbols are listed in Section~\ref{section-circuits-ee-symbols} and
-later sections.
-
-\begin{key}{/tikz/resistor=\opt{\meta{options}}}
-    This key should be used with a |node| path command or with the |to| path
-    command.
-
-    \medskip\textbf{Using the Key with Normal Nodes.}
-    When used with a node, it will cause this node to ``look like'' a resistor
-    (by default, in the IEC library, this is just a simple rectangle).
-    %
-\begin{codeexample}[preamble={\usetikzlibrary{circuits.ee.IEC}}]
-\tikz [circuit ee IEC]
-  \node [resistor] {};
-\end{codeexample}
-
-    Unlike normal nodes, a resistor node generally should not take any text (as
-    in |node [resistor] {foo}|). Instead, the labeling of resistors should be
-    done using the |label|, |info| and |ohm| options.
-    %
-\begin{codeexample}[preamble={\usetikzlibrary{circuits.ee.IEC}}]
-\tikz [circuit ee IEC]
-  \node [resistor,ohm=5] {};
-\end{codeexample}
-
-    The \meta{options} make no real sense when the |resistor| option is used
-    with a normal node, you can just as well given them to the |node| itself.
-    Thus, the following has the same effect as the above example:
-    %
-\begin{codeexample}[preamble={\usetikzlibrary{circuits.ee.IEC}}]
-\tikz [circuit ee IEC]
-  \node [resistor={ohm=5}] {};
-\end{codeexample}
-
-    In a circuit, you will often wish to rotate elements. For this, the options
-    |point up|, |point down|, |point left| or |point right| may be especially
-    useful. They are just shorthands for appropriate rotations like
-    |rotate=90|.
-    %
-\begin{codeexample}[preamble={\usetikzlibrary{circuits.ee.IEC}}]
-\tikz [circuit ee IEC] {
-  \node (R1) [resistor,point up,ohm=5] at (3,1) {};
-  \node (R2) [resistor,ohm=10k]        at (0,0) {};
-  \draw (R2) -| (R1);
-}
-\end{codeexample}
-
-    \medskip\textbf{Using the Key on a To Path.}
-    When the |resistor| key is used on a |to| path inside a |circuit ee IEC|,
-    the |circuit handle symbol| key is called internally. This has a whole
-    bunch of effects:
-    %
-    \begin{enumerate}
-        \item The path currently being constructed is cut up to make place for
-            a node.
-        \item This node will be a |resistor node| that is rotated so that it
-            points ``along'' the path (unless an option like |shift only| or an
-            extra rotation is used to change this).
-        \item The \meta{options} passed to the |resistor| key are passed on to
-            the node.
-        \item The \meta{options} are pre-parsed to identify a |pos| key or a
-            key like |at start| or |midway|. These keys are used to determine
-            where on the |to| path the node will lie.
-    \end{enumerate}
-
-    Since the \meta{options} of the |resistor| key are passed on to the
-    resistor node on the path, you can use it to add labels to the node. Here
-    is a simple example:
-    %
-\begin{codeexample}[preamble={\usetikzlibrary{circuits.ee.IEC}}]
-\tikz [circuit ee IEC]
-  \draw (0,0) to [resistor=red]        (3,0)
-              to [resistor={ohm=2\mu}] (3,2);
-\end{codeexample}
-
-    You can add multiple labels to a resistor and you can have multiple
-    resistors (or other elements) on a single path.
-
-    \medskip\textbf{Inputs, Outputs, and Anchors.}
-    Like the logical gates, all ee-symbols have an |input| and an |output|
-    anchor. Special-purpose-nodes may have even more anchors of this type.
-    Furthermore, the ee-symbols-nodes also have four standard compass direction
-    anchors.
-
-    \medskip\textbf{Changing the Appearance.}
-    To configure the appearance of all |resistor|s, see
-    Section~\ref{section-theming-symbols}. You can use the \meta{options} to
-    locally change the appearance of a single resistor.
-\end{key}
-
-Let us now have a look at an example of a unit: the Ohm unit. The other
-predefined units are listed in Section~\ref{section-circuits-units}.
-
-\begin{key}{/tikz/ohm=\meta{value}}
-    This key is used to add an |info| label to a node with a special text:
-    |$\mathrm{|\meta{value}|\Omega}$|. In other words, the |ohm| key can only
-    be used with the options of a node and, when used, it will cause the
-    \meta{value} to be placed next to the node, followed by $\Omega$. Since the
-    \meta{value} is typeset inside a |\mathrm| command, when you write |ohm=5k|
-    you get $\mathrm{5k\Omega}$, |ohm=5p| yields $\mathrm{5p\Omega}$, and
-    |ohm=5.6\cdot 10^{2}\mu| yields $\mathrm{5.6\cdot 10^{2}\mu\Omega}$.
-    %
-\begin{codeexample}[preamble={\usetikzlibrary{circuits.ee.IEC}}]
-\tikz [circuit ee IEC] \draw (0,0) to [resistor={ohm=5M}] (0,2);
-\end{codeexample}
-
-    Instead of |ohm| you can also use |ohm'|, which places the label on the
-    other side.
-    %
-\begin{codeexample}[preamble={\usetikzlibrary{circuits.ee.IEC}}]
-\tikz [circuit ee IEC] \draw (0,0) to [resistor={ohm'=5M}] (0,2);
-\end{codeexample}
-
-    Finally, there are also keys |ohm sloped| and |ohm' sloped| for having the
-    info label rotate together with the main node.
-    %
-\begin{codeexample}[preamble={\usetikzlibrary{circuits.ee.IEC}}]
-\tikz [circuit ee IEC]
-  \draw (0,0) to [resistor={ohm sloped=5M}] (0,2)
-        (2,0) to [resistor={ohm' sloped=6f}]  (2,2);
-\end{codeexample}
-
-    You can configure the appearance of an Ohm info label using the key
-    |every ohm|.
-\end{key}
-
-Finally, let us have a look at an annotation: the |light emitting| annotation.
-The other predefined units are listed in
-Section~\ref{section-circuits-annotations}.
-
-\begin{key}{/tikz/light emitting=\opt{\meta{options}}}
-    Like a unit, an annotation should be given as an additional option to a
-    node. It causes some drawings (in this case, two parallel lines) to be
-    placed next to the node.
-    %
-\begin{codeexample}[preamble={\usetikzlibrary{circuits.ee.IEC}}]
-\tikz [circuit ee IEC] \draw (0,0) to [diode=light emitting] (2,0);
-\end{codeexample}
-
-    The \meta{options} can be used for three different things:
-    %
-    \begin{enumerate}
-        \item You can use keys like |red| to change the appearance of this
-            annotation, locally.
-        \item You can use keys like |<-|  or |-latex| to change the direction
-            and kinds of arrows used in the annotation.
-        \item You can use info labels like |ohm=5| or |info=foo| inside the
-            \meta{options}. These info labels will be added to the main node
-            (not to the annotation itself), but the label distance will have
-            been changed to accommodate for the space taken up by the
-            annotation.
-            %
-\begin{codeexample}[preamble={\usetikzlibrary{circuits.ee.IEC}}]
-\tikz [circuit ee IEC]
-{
-  \draw (0,2) to [diode={light emitting,info=not good}] (2,2);
-  \draw (0,0) to [diode={light emitting={info=better},
-                         info'=also good}]  (2,0);
-}
-\end{codeexample}
-    \end{enumerate}
-
-    In addition to |light emitting| there is also a key called
-    |light emitting'|, which simply places the annotation on the other side of
-    the node.
-
-    You can configure the appearance of annotations in three ways:
-    %
-    \begin{itemize}
-        \item You can set the |every circuit annotation| style.
-        \item You can set the |every light emitting| style.
-        \item You can set the following key:
-            %
-            \begin{stylekey}{/tikz/annotation arrow}
-                This style should set the default |>| arrow to some nice value.
-            \end{stylekey}
-    \end{itemize}
-\end{key}
-
-\def\eelineexample#1#2{%
-  \texttt{#1}\indexkey{#1}
-   &
-  \tikz[baseline=-.5ex,circuit ee IEC] \draw (0,0) to [#1] (3,0);
-  &
-  \relax\def\temp{#2}
-  \ifx\temp\empty\else
-  {\tikz[baseline=-.5ex,circuit ee IEC,set #2 graphic=var #2 IEC graphic]
-    \draw (0,0) to [#2] (3,0);}
-  \fi \\[.2em]
-}
-\def\eeendexample#1#2{%
-  \texttt{#1}\indexkey{#1}
-   &
-  \tikz[baseline=-.5ex,circuit ee IEC] \draw (0,0) to [#1={at end}] (1.5,0)(3,0);
-  &
-  \relax\def\temp{#2}
-  \ifx\temp\empty\else
-  {\tikz[baseline=-.5ex,circuit ee IEC,set #2 graphic=var #2 IEC graphic]
-    \draw (0,0) to [#2={at end}] (1.5,0)(3,0);}
-  \fi \\[.2em]
-}
-\def\unitexample#1{%
-  \texttt{#1}\indexkey{#1}
-  &
-  \tikz [baseline,inner sep=0pt] \node[#1=1] {};\\
-}
-\def\annotationexample#1{%
-  \texttt{#1}\indexkey{#1}
-  &
-  \tikz[baseline=-.5ex,circuit ee IEC]
-    \draw (0,0) to [resistor={#1}] (2,0)
-                to [diode   ={#1'}] (4,0);\\
-}
-\def\empty{}
-
-
-\subsubsection{Symbols: Indicating Current Directions}
-\label{section-ee-symbols}
-\label{section-circuits-ee-symbols}
-
-There \todosp{why two labels? The first doesn't seem to be used.} are two
-symbols for indicating current directions. These symbols are defined directly
-inside |circuit ee|.
-\medskip
-
-\noindent
-\begin{tabular}{p{5cm}ll}
-    \emph{Key} & \emph{Appearance}\\[.25em]
-    \eelineexample{/tikz/current direction}{}
-    \eelineexample{/tikz/current direction'}{}
-\end{tabular}
-
-\medskip
-The examples have been produced by (in essence)
-|\draw (0,0) to[|\meta{symbol name}|] (3,0);|.
-
-
-\subsubsection{Symbols: Basic Elements}
-
-The following table show basic symbols as they are depicted inside the
-|circuit ee IEC| environment. To install one of alternate graphics, you have to
-say |set| \meta{symbol name} |graphic=var| \meta{symbol name} |IEC graphic|.
-\medskip
-
-\noindent
-\begin{tabular}{p{5cm}ll}
-    \emph{Key} & \emph{Appearance}  & \emph{Alternate appearance} \\[.25em]
-    \eelineexample{/tikz/resistor}{resistor}
-    \eelineexample{/tikz/inductor}{inductor}
-    \eelineexample{/tikz/capacitor}{}
-    \eelineexample{/tikz/battery}{}
-    \eelineexample{/tikz/bulb}{}
-    \eelineexample{/tikz/current source}{}
-    \eelineexample{/tikz/voltage source}{}
-    \eelineexample{/tikz/ac source}{}
-    \eelineexample{/tikz/dc source}{}
-    \eeendexample{/tikz/ground}{}
-\end{tabular}
-
-
-\subsubsection{Symbols: Diodes}
-
-The following table shows diodes as they are depicted inside the
-|circuit ee IEC| environment.
-\medskip
-
-\noindent
-\begin{tabular}{p{5cm}ll}
-  \emph{Key} & \emph{Appearance}  & \emph{Alternate appearance} \\[.25em]
-  \eelineexample{/tikz/diode}{diode}
-  \eelineexample{/tikz/Zener diode}{Zener diode}
-  \eelineexample{/tikz/Schottky diode}{Schottky diode}
-  \eelineexample{/tikz/tunnel diode}{tunnel diode}
-  \eelineexample{/tikz/backward diode}{backward diode}
-  \eelineexample{/tikz/breakdown diode}{breakdown diode}
-\end{tabular}
-
-
-\subsubsection{Symbols: Contacts}
-
-The following table shows contacts as they are depicted inside the
-|circuit ee IEC| environment.
-\medskip
-
-\noindent
-\begin{tabular}{p{5cm}ll}
-    \emph{Key} & \emph{Appearance}  & \emph{Alternate appearance} \\[.25em]
-    \eelineexample{/tikz/contact}{}
-    \eelineexample{/tikz/make contact}{make contact}
-    \eelineexample{/tikz/break contact}{}
-\end{tabular}
-
-
-\subsubsection{Symbols: Measurement devices}
-
-The following table shows measurement devices as they are depicted inside the
-|circuit ee IEC| environment.
-\medskip
-
-\noindent
-\begin{tabular}{p{5cm}ll}
-    \emph{Key} & \emph{Appearance} \\[.25em]
-    \eelineexample{/tikz/amperemeter}{}
-    \eelineexample{/tikz/voltmeter}{}
-    \eelineexample{/tikz/ohmmeter}{}
-\end{tabular}
-
-
-\subsubsection{Units}
-\label{section-circuits-units}
-
-The |circuits.ee| library predefines the following unit keys:
-\medskip
-
-\noindent
-\begin{tabular}{p{5cm}c}
-    \emph{Key} & \emph{Appearance of $1$ unit} \\[.25em]
-    \unitexample{/tikz/ampere}
-    \unitexample{/tikz/volt}
-    \unitexample{/tikz/ohm}
-    \unitexample{/tikz/siemens}
-    \unitexample{/tikz/henry}
-    \unitexample{/tikz/farad}
-    \unitexample{/tikz/coulomb}
-    \unitexample{/tikz/voltampere}
-    \unitexample{/tikz/watt}
-    \unitexample{/tikz/hertz}
-\end{tabular}
-
-
-\subsubsection{Annotations}
-\label{section-circuits-annotations}
-
-The |circuits.ee.IEC| library defines the following annotations:
-\medskip
-
-\noindent
-\begin{tabular}{p{5cm}ll}
-    \emph{Key} & \emph{Appearance} \\[.25em]
-    \annotationexample{/tikz/light emitting}
-    \annotationexample{/tikz/light dependent}
-    \annotationexample{/tikz/direction info}
-    \annotationexample{/tikz/adjustable}
-\end{tabular}
-\medskip
-
-The lines have been produced using, in essence,
-%
-\begin{codeexample}[code only]
-\draw (0,0)  to [resistor=light emitting] (2,0)  to [diode=light emitting'] (4,0);
-\end{codeexample}
-%
-and similarly for the other annotations.
-
-
-\subsubsection{Implementation: The EE-Symbols Shape Library}
-
-The \tikzname\ libraries depend on two shape libraries, which are included
-automatically. Usually, you will not need to use these shapes directly.
-
-\begin{pgflibrary}{shapes.gates.ee}
-    This library defines basic shapes that can be used by all ee-circuit
-    libraries. Currently, it defines the following shapes:
-    %
-    \begin{itemize}
-        \item |rectangle ee|
-        \item |circle ee|
-        \item |direction ee|
-    \end{itemize}
-    %
-    Additionally, the library defines the following arrow tip: The
-    |direction ee| arrow tip is basically the same as a |triangle 45| arrow tip
-    with rounded joins.
-
-    \begin{tabular}{ll}
-        \symarrow{direction ee}
-    \end{tabular}
-
-    However, unlike normal arrow tips, its size does \emph{not} depend on the
-    current line width. Rather, it depends on the value of its arrow options,
-    which should be set to the desired size. Thus, you should say something
-    like |\pgfsetarrowoptions{direction ee}{5pt}| to set the size of the arrow.
-\end{pgflibrary}
-
-\begin{shape}{rectangle ee}
-    This shape is completely identical to a normal |rectangle|, only there are
-    two additional anchors: The |input| anchor is an alias for the |west|
-    anchor, while the |output| anchor is an alias for the |east| anchor.
-\end{shape}
-
-\begin{shape}{circle ee}
-    Like the |rectangle ee| shape, only for circles.
-\end{shape}
-
-\begin{shape}{direction ee}
-    This shape is rather special. It is intended to be used to ``turn an arrow
-    tip into a shape''. First, you should set the following key to the name of
-    an arrow tip:
-    %
-    \begin{key}{/pgf/direction ee arrow=\meta{right arrow tip name}}
-        The value of this key will be used for the arrow tip depicted in an
-        |direction ee| shape.
-    \end{key}
-    %
-    When a node of shape |direction ee| is created, several things happen:
-    %
-    \begin{enumerate}
-        \item The size of the shape is computed according to the following
-            rules: The width of the shape is set up so that the left border of
-            the shape is at the left end of the arrow tip and the right border
-            is at the right end of the arrow tip. These left and right ``ends''
-            of the arrow are the tip end and the back end specified by the
-            arrow itself (see Section~\ref{section-arrow-terminology} for
-            details). You usually need not worry about this width setting.
-
-            By comparison, the height of the arrow is given by the current
-            setting of |minimum height|. Thus, this key must have been set up
-            correctly to reflect the ``real'' height of the arrow tip. The
-            reason is that the height of an arrow is not specified when arrows
-            are declared and is, thus, not available, here.
-
-            Possibly, the height computation will change in the future to
-            reflect the real height of the arrow, so you should generally set
-            up the |minimum height| to be the same as the real height.
-        \item A straight line from left to right inside the shape's boundaries
-            is added to the background path.
-        \item The arrow tip, pointing right, is drawn before the background
-            path.
-    \end{enumerate}
-    %
-    The anchors of this shape are just the compass anchors, which lie on a
-    rectangle whose width and height are the above-computed height and width.
-    %
-\begin{codeexample}[preamble={\usetikzlibrary{circuits.ee.IEC}}]
-\begin{tikzpicture}
-  \pgfsetarrowoptions{direction ee}{6cm}
-  \node[name=s,shape=direction ee,shape example,minimum height=0.7654*6cm] {};
-  \foreach \anchor/\placement in
-    {center/above, 30/above right,
-     north/above, south/below, east/left, west/right,
-     north east/above, south east/below, south west/below, north west/above,
-     input/left,output/right}
-     \draw[shift=(s.\anchor)] plot[mark=x] coordinates{(0,0)}
-       node[\placement] {\scriptsize\texttt{(s.\anchor)}};
-\end{tikzpicture}
-\end{codeexample}
-
-\begin{codeexample}[preamble={\usetikzlibrary{circuits.ee.IEC}}]
-\begin{tikzpicture}[direction ee arrow=angle 45]
-  \node[name=s,shape=direction ee,shape example,minimum height=1.75cm] {};
-  \foreach \anchor/\placement in {north/above, south/below,
-                                  output/right, input/left}
-     \draw[shift=(s.\anchor)] plot[mark=x] coordinates{(0,0)}
-       node[\placement] {\scriptsize\texttt{(s.\anchor)}};
-\end{tikzpicture}
-\end{codeexample}
-    %
-\end{shape}
-
-
-\subsubsection{Implementation: The IEC-Style EE-Symbols Shape Library}
-
-\begin{pgflibrary}{shapes.gates.ee.IEC}
-    This library defines shapes for depicting ee symbols according to the IEC
-    recommendations. These shapes will typically be used in conjunction with
-    the graphic mechanism detailed earlier, but you can also used them
-    directly.
-\end{pgflibrary}
-
-\begin{shape}{generic circle IEC}
-    This shape inherits from |circle ee|, which in turn is just a normal
-    |circle| with additional |input| and |output| anchors at the left and right
-    ends. However, additionally, this shape allows you to specify a path that
-    should be added before the background path using the following key:
-    %
-    \begin{key}{/pgf/generic circle IEC/before background=\meta{code}}
-        When a node of shape |generic circle IEC| is created, the current
-        setting of this key is used as the ``before background path''. This
-        means that after the circle's background has been
-        drawn/filled/whatever, the \meta{code} is executed.
-
-        When the \meta{code} is executed, the coordinate system will have been
-        transformed in such a way that the point $(1\mathrm{pt},0\mathrm{pt})$
-        lies at the right end of the circle and $(0\mathrm{pt},1\mathrm{pt})$
-        lies at the top of the circle. (More precisely, these points will lie
-        exactly on the middle of the radial line.)
-    \end{key}
-    %
-    Here is an examples of how to use this shape:
-    %
-\begin{codeexample}[preamble={\usetikzlibrary{circuits.ee.IEC}}]
-\tikz \node [generic circle IEC,
-             /pgf/generic circle IEC/before background={
-               \pgfpathmoveto{\pgfpointorigin}
-               \pgfpathlineto{\pgfpoint{1pt}{0pt}}
-               \pgfpathlineto{\pgfpoint{0pt}{1pt}}
-               \pgfpathlineto{\pgfpoint{-0.5pt}{-0.5pt}}
-               \pgfusepathqstroke
-             },
-             draw] {Hello world};
-\end{codeexample}
-    %
-\end{shape}
-
-\begin{shape}{generic diode IEC}
-    This shape is used to depict diodes. The main shape is taken up by a
-    ``right pointing'' triangle. The anchors are positioned on the border of a
-    rectangle around the diode, see the below example. The diode's size is
-    based on the current settings of |minimum width| and |minimum height|.
-    %
-\begin{codeexample}[preamble={\usetikzlibrary{circuits.ee.IEC}}]
-\begin{tikzpicture}
-  \node[name=s,shape=generic diode IEC,shape example,minimum size=6cm] {};
-  \foreach \anchor/\placement in
-    {center/above, 30/above right,
-     north/above, south/below, east/left, west/right,
-     north east/above, south east/below, south west/below, north west/above,
-     input/left,output/right}
-     \draw[shift=(s.\anchor)] plot[mark=x] coordinates{(0,0)}
-       node[\placement] {\scriptsize\texttt{(s.\anchor)}};
-\end{tikzpicture}
-\end{codeexample}
-
-    This shape, like the |generic circle IEC| shape, is generic in the sense
-    that there is a special key that is used for the before background
-    drawings:
-    %
-    \begin{key}{/pgf/generic diode IEC/before background=\meta{code}}
-        Similarly to the |generic circle IEC| shape, when a node of shape
-        |generic diode IEC| is created, the current setting of this key is used
-        as the ``before background path''. When the \meta{code} is executed,
-        the coordinate system will have been transformed in such a way that the
-        origin is at the ``tip'' of the diode's triangle, the point
-        $(0\mathrm{pt},1\mathrm{pt})$ is exactly half the diode's height above
-        this origin, and the point $(1\mathrm{pt},0\mathrm{pt})$ is half the
-        diode's height to the right of the origin.
-
-        The idea is that you use this key to draw different kinds of diode
-        endings.
-        %
-\begin{codeexample}[preamble={\usetikzlibrary{circuits.ee.IEC}}]
-\tikz \node [minimum size=1cm,generic diode IEC,
-             /pgf/generic diode IEC/before background={
-               \pgfpathmoveto{\pgfqpoint{-.5pt}{-1pt}}
-               \pgfpathlineto{\pgfqpoint{.5pt}{-1pt}}
-               \pgfpathmoveto{\pgfqpoint{0pt}{-1pt}}
-               \pgfpathlineto{\pgfqpoint{0pt}{1pt}}
-               \pgfpathmoveto{\pgfqpoint{-.5pt}{1pt}}
-               \pgfpathlineto{\pgfqpoint{.5pt}{1pt}}
-               \pgfusepathqstroke
-             },
-             draw] {};
-\end{codeexample}
-    \end{key}
-\end{shape}
-
-\begin{shape}{breakdown diode IEC}
-    This shape is used to depict a bidirectional breakdown diode. The diode's
-    size is based on the current settings of |minimum width| and
-    |minimum height|.
-    %
-\begin{codeexample}[preamble={\usetikzlibrary{circuits.ee.IEC}}]
-\begin{tikzpicture}
-  \node[name=s,shape=breakdown diode IEC,shape example,minimum width=6cm,minimum height=4cm] {};
-  \foreach \anchor/\placement in
-    {center/above, 30/above right,
-     north/above, south/below, east/left, west/right,
-     north east/above, south east/below, south west/below, north west/above,
-     input/left,output/right}
-     \draw[shift=(s.\anchor)] plot[mark=x] coordinates{(0,0)}
-       node[\placement] {\scriptsize\texttt{(s.\anchor)}};
-\end{tikzpicture}
-\end{codeexample}
-    %
-\end{shape}
-
-\begin{shape}{var resistor IEC}
-    This shape is used to depict a variant version of a resistor. Its size is
-    computed as for a rectangle (thus, its size depends things like the
-    |minimum height|). Then, inside this rectangle, a background path is set up
-    according to the following rule: Starting from the left end, zigzag
-    segments are added to the path. Each segment consists of a line at a 45
-    degree angle going up to the top of the rectangle, then going down to the
-    bottom, then going up to mid height of the node. As many segments as
-    possible are put inside as possible. The last segment is then connected to
-    the output anchor via a straight line.
-
-    All of this means that, in general, the shape should be much wider than
-    high.
-    %
-\begin{codeexample}[preamble={\usetikzlibrary{circuits.ee.IEC}}]
-\begin{tikzpicture}
-  \node[name=s,shape=var resistor IEC,shape example,minimum width=7cm,minimum height=1cm] {};
-  \foreach \anchor/\placement in
-    {center/above, 30/above right,
-     north/above, south/below, east/left, west/right,
-     north east/above, south east/below, south west/below, north west/above,
-     input/left,output/right}
-     \draw[shift=(s.\anchor)] plot[mark=x] coordinates{(0,0)}
-       node[\placement] {\scriptsize\texttt{(s.\anchor)}};
-\end{tikzpicture}
-\end{codeexample}
-    %
-\end{shape}
-
-\begin{shape}{inductor IEC}
-    This shape is used to depict an inductor, using a bumpy line. Its size is
-    computed as follows: Any text and |inner sep| are ignored (and should
-    normally not be given). The |minimum height| plus (twice) the |outer ysep|
-    specify the distance between the |north| and |south| anchors, similarly for
-    the |minimum width| plus the |outer xsep| for the |east| and |west|. The
-    bumpy line is drawn starting from the lower left corner to the lower right
-    corner with bumps being half-circles whose height is exactly the
-    |minimum height|. The |center| of the shape is just above the |south|
-    anchor, at a distance of the |outer ysep|.
-    %
-\begin{codeexample}[preamble={\usetikzlibrary{circuits.ee.IEC}}]
-\begin{tikzpicture}
-  \node[name=s,shape=inductor IEC,shape example,minimum width=7cm,minimum height=1cm] {};
-  \foreach \anchor/\placement in
-    {center/above, 30/above right,
-     north/above, south/below, east/left, west/right,
-     north east/above, south east/below, south west/below, north west/above,
-     input/left,output/right}
-     \draw[shift=(s.\anchor)] plot[mark=x] coordinates{(0,0)}
-       node[\placement] {\scriptsize\texttt{(s.\anchor)}};
-\end{tikzpicture}
-\end{codeexample}
-    %
-    Just as for a |var resistor IEC|, as many bumps as possible are added and
-    the last bump is connected to the output anchor via a straight line.
-\end{shape}
-
-\begin{shape}{capacitor IEC}
-    This shape is based on a |rectangle ee|. However, instead of a rectangle as
-    the background path, only the ``left and right lines'' that make up the
-    rectangle are drawn.
-    %
-\begin{codeexample}[preamble={\usetikzlibrary{circuits.ee.IEC}}]
-\begin{tikzpicture}
-  \node[name=s,shape=capacitor IEC,shape example,
-        minimum width=2cm,minimum height=3cm,inner sep=0pt] {};
-  \foreach \anchor/\placement in
-    {center/above, 30/above right,
-     north/above, south/below, east/left, west/right,
-     north east/above, south east/below, south west/below, north west/above,
-     input/left,output/right}
-     \draw[shift=(s.\anchor)] plot[mark=x] coordinates{(0,0)}
-       node[\placement] {\scriptsize\texttt{(s.\anchor)}};
-\end{tikzpicture}
-\end{codeexample}
-    %
-\end{shape}
-
-\begin{shape}{battery IEC}
-    This shape is similar to a |capacitor IEC|, however, the right line is only
-    half the height of the left line.
-    %
-\begin{codeexample}[preamble={\usetikzlibrary{circuits.ee.IEC}}]
-\tikz \node[shape=battery IEC,shape example,minimum size=2cm,
-            inner sep=0pt] {};
-\end{codeexample}
-    %
-\end{shape}
-
-\begin{shape}{ground IEC}
-    This shape is similar to a |batter IEC|, only three lines of different
-    heights are drawn.
-    %
-\begin{codeexample}[preamble={\usetikzlibrary{circuits.ee.IEC}}]
-\tikz \node[shape=ground IEC,shape example,minimum size=2cm,
-            inner sep=0pt] {};
-\end{codeexample}
-    %
-\end{shape}
-
-\begin{shape}{make contact IEC}
-    This shape consists of a line going from the lower left corner to the upper
-    right corner. The size and anchors of this shape are computed in the same
-    way as for an |inductor IEC|.
-    %
-\begin{codeexample}[preamble={\usetikzlibrary{circuits.ee.IEC}}]
-\begin{tikzpicture}
-  \node[name=s,shape=make contact IEC,shape example,minimum width=3cm,minimum height=1cm] {};
-  \foreach \anchor/\placement in
-    {center/above, 30/above right,
-     north/above, south/below, east/left, west/right,
-     north east/above, south east/below, south west/below, north west/above,
-     input/left,output/right}
-     \draw[shift=(s.\anchor)] plot[mark=x] coordinates{(0,0)}
-       node[\placement] {\scriptsize\texttt{(s.\anchor)}};
-\end{tikzpicture}
-\end{codeexample}
-    %
-\end{shape}
-
-\begin{shape}{var make contact IEC}
-    This shape works like |make contact IEC|, only a little circle is added to
-    the path at the lower left corner. The radius of this circle is one twelfth
-    of the width of the node.
-    %
-\begin{codeexample}[preamble={\usetikzlibrary{circuits.ee.IEC}}]
-\tikz \node[shape=var make contact IEC,shape example,
-            minimum height=1cm,minimum width=3cm,inner sep=0pt] {};
-\end{codeexample}
-    %
-\end{shape}
-
-\begin{shape}{break contact IEC}
-    This shape depicts a contact that can be broken. It works like
-    |make contact IEC|.
-    %
-\begin{codeexample}[preamble={\usetikzlibrary{circuits.ee.IEC}}]
-\tikz \node[shape=break contact IEC,shape example,
-            minimum height=1cm,minimum width=3cm,inner sep=0pt] {};
-\end{codeexample}
-    %
-\end{shape}
-- 
cgit v1.2.3

