texlive[46556] Master: tikz-relay (6feb18)

commits+karl at tug.org commits+karl at tug.org
Wed Feb 7 01:03:15 CET 2018


Revision: 46556
          http://tug.org/svn/texlive?view=revision&revision=46556
Author:   karl
Date:     2018-02-07 01:03:14 +0100 (Wed, 07 Feb 2018)
Log Message:
-----------
tikz-relay (6feb18)

Modified Paths:
--------------
    trunk/Master/tlpkg/bin/tlpkg-ctan-check
    trunk/Master/tlpkg/tlpsrc/collection-pictures.tlpsrc

Added Paths:
-----------
    trunk/Master/texmf-dist/doc/latex/tikz-relay/
    trunk/Master/texmf-dist/doc/latex/tikz-relay/README.txt
    trunk/Master/texmf-dist/doc/latex/tikz-relay/doc/
    trunk/Master/texmf-dist/doc/latex/tikz-relay/doc/BeamerAnimation.pdf
    trunk/Master/texmf-dist/doc/latex/tikz-relay/doc/BeamerAnimation.tex
    trunk/Master/texmf-dist/doc/latex/tikz-relay/doc/tikz-relay-doc.pdf
    trunk/Master/texmf-dist/doc/latex/tikz-relay/doc/tikz-relay-doc.tex
    trunk/Master/texmf-dist/doc/latex/tikz-relay/tex/
    trunk/Master/texmf-dist/doc/latex/tikz-relay/tex/tikzlibrarycircuits.ee.IEC.relay.code.tex
    trunk/Master/tlpkg/tlpsrc/tikz-relay.tlpsrc

Added: trunk/Master/texmf-dist/doc/latex/tikz-relay/README.txt
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tikz-relay/README.txt	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/tikz-relay/README.txt	2018-02-07 00:03:14 UTC (rev 46556)
@@ -0,0 +1,15 @@
+Copyright (C) 2018 by Luis Paulo Laus, <laus at utfpr.edu.br>
+------------------------------------------------------------
+
+The tikz-relay package may be distributed and/or modified under the conditions of the LaTeX Project Public License, either version 1 of this license or (at your option) any later version. The latest version of this license is in: 
+  http://www.latex-project.org/lppl.txt and version 1 or
+later is part of all distributions of LaTeX version 1999/12/01 or later.
+
+Version: 1.0
+Version date: 2018-02-05
+
+------------------------------------------------------------
+
+This package contains a collection of symbols for typesetting electrical wiring diagrams for relay control systems. The symbols are meant to be in agreement with international standard IEC-60617 which is worldwide adopted with perhaps the exception of USA. It extends and modify, when needed, the TikZ-libray circuits.ee.IEC. A few non-standard symbols are also included mainly to be used in presentations, particularly with beamer package.
+
+------------------------------------------------------------
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/doc/latex/tikz-relay/README.txt
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/tikz-relay/doc/BeamerAnimation.pdf
===================================================================
(Binary files differ)

Index: trunk/Master/texmf-dist/doc/latex/tikz-relay/doc/BeamerAnimation.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tikz-relay/doc/BeamerAnimation.pdf	2018-02-06 23:59:08 UTC (rev 46555)
+++ trunk/Master/texmf-dist/doc/latex/tikz-relay/doc/BeamerAnimation.pdf	2018-02-07 00:03:14 UTC (rev 46556)

Property changes on: trunk/Master/texmf-dist/doc/latex/tikz-relay/doc/BeamerAnimation.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/tikz-relay/doc/BeamerAnimation.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tikz-relay/doc/BeamerAnimation.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/tikz-relay/doc/BeamerAnimation.tex	2018-02-07 00:03:14 UTC (rev 46556)
@@ -0,0 +1,137 @@
+%% This is file `BeamerAnimation.tex'
+%% Version: 1.0
+%% Version date: 2018-02-05
+%% 
+%% Copyright (C) 2018 by Luis Paulo Laus, laus at utfpr.edu.br
+%%
+%% This package can be redistributed and/or modified under the terms
+%% of the LaTeX Project Public License distributed from CTAN
+%% archives in directory macros/latex/base/lppl.txt; either
+%% version 1 of the License, or (at your option) any later version,
+%% with `The Package' referring to the software `tikzlibrarysfc.code.tex' and its
+%% accompanying documentation and `The Copyright Holder' referring to the
+%% person Luis Paulo Laus.
+%% 
+%% 
+%% IMPORTANT NOTICE: 
+%% 
+%% For error reports, comments or suggestions in case of UNCHANGED 
+%% versions send mail to:
+%% laus at utfpr.edu.br
+%% 
+%%
+
+\documentclass{beamer}
+\usepackage{tikz,units}
+\usetikzlibrary{backgrounds}
+
+% \usetikzlibrary{circuits.ee.IEC.relay} % used in examples
+\input ../../tikz-relay/tex/tikzlibrarycircuits.ee.IEC.relay.code
+
+\makeatletter
+\newcommand*{\overlaynumber}{\number\beamer at slideinframe}
+\makeatother
+
+\tikzset{ % alt and visible (overlay)
+  alt/.code args={<#1>#2#3}{%
+    \alt<#1>{\pgfkeysalso{#2}}{\pgfkeysalso{#3}}
+  },
+  visible/.code args={<#1>#2}{%
+    \alt<#1>{\pgfkeysalso{#2}}{}
+  }
+}
+
+\colorlet{LBlue}{blue!20}
+\colorlet{LRed}{red!20}
+
+\begin{document}
+
+\begin{frame}{Four-Step Sequencer \overlaynumber{}}
+\noindent \begin{center}
+\hspace*{-0.05\textwidth}\resizebox{1.1\textwidth}{!}{
+\begin{tikzpicture}[circuit ee IEC relay,thick,x=6\tikzcircuitssizeunit,y=4.8\tikzcircuitssizeunit]
+  \newdimen\mydim
+  \pgfextractx{\mydim}{\pgfpointxy{2}{0}}
+
+  \draw(-1.5,0) node[left]{$\unit[0]{V}$} --+(9,0) (-1.5,4) node[left]{$\unit[+24]{V}$} --+(9,0);
+
+  \draw (0,0) node[contact]{}
+              to [relay coil={info=$K_1$,name=k11,alt={<1,2,7-17>{}{fill=LRed}}}] ++(0,1)
+              to [break contact={info=$K_2$,name=k24,alt={<1-5,11-20>{}{activated}}}] ++(0,1) node[contact,name=N1]{}
+              to [make contact={info=$K_4$,name=k43,alt={<1-13,19-20>{}{activated}}}] ++(0,1)
+              to [make contact={push button={info=$b_1$},name=b1,alt={<1-16,20>{}{activated}}}] ++(0,1) node[contact]{};
+  \draw (N1) -- ++(1,0) 
+              to [make contact={info=$K_1$,name=k12,alt={<1,2,7-17>{}{activated}}}] ++(0,1) -- ++(0,1) node[contact]{};
+  \draw (N1) -- ++(-1,0)
+              to [make contact={push button={info=$b_S$},name=bs,alt={<1,4-20>{}{activated}}}] ++(0,2) node[contact]{};
+  \pgftransformxshift{\mydim}
+  \draw (0,0) node[contact]{}
+              to [relay coil={info=$K_2$,name=k21,alt={<1-5,11-20>{}{fill=LRed}}}] ++(0,1)
+              to [break contact={info=$K_3$,name=k34,alt={<1-9,15-20>{}{activated}}}] ++(0,1) node[contact,name=N1]{}
+              to [make contact={info=$K_1$,name=k13,alt={<1,2,7-17>{}{activated}}}] ++(0,1)
+              to [make contact={push button={info=$b_2$},name=b2,alt={<1-4,8-20>{}{activated}}}] ++(0,1) node[contact]{};
+  \draw (N1) -- ++(1,0)
+              to [make contact={info=$K_2$,name=k22,alt={<1-5,11-20>{}{activated}}}] ++(0,1) -- ++(0,1) node[contact]{};
+  \pgftransformxshift{\mydim}
+  \draw (0,0) node[contact]{}
+              to [relay coil={info=$K_3$,name=k31,alt={<1-9,15-20>{}{fill=LRed}}}] ++(0,1)
+              to [break contact={info=$K_4$,name=k44,alt={<1-13,19-20>{}{activated}}}] ++(0,1) node[contact,name=N1]{}
+              to [make contact={info=$K_2$,name=k23,alt={<1-5,11-20>{}{activated}}}] ++(0,1)
+              to [make contact={push button={info=$b_3$},name=b3,alt={<1-8,12-20>{}{activated}}}] ++(0,1) node[contact]{};
+  \draw (N1) -- ++(1,0)
+              to [make contact={info=$K_3$,name=k32,alt={<1-9,15-20>{}{activated}}}] ++(0,1) -- ++(0,1) node[contact]{};
+  \pgftransformxshift{\mydim}
+  \draw (0,0) node[contact]{}
+              to [relay coil={info=$K_4$,name=k41,alt={<1-13,19-20>{}{fill=LRed}}}] ++(0,1)
+              to [break contact={info=$K_1$,name=k14,alt={<1,2,7-17>{}{activated}}}] ++(0,1) node[contact,name=N1]{}
+              to [make contact={info=$K_3$,name=k33,alt={<1-9,15-20>{}{activated}}}] ++(0,1)
+              to [make contact={push button={info=$b_4$},name=b4,alt={<1-12,16-20>{}{activated}}}] ++(0,1)  node[contact]{};
+  \draw (N1) -- ++(1,0)
+              to [make contact={info=$K_4$,name=k42,alt={<1-13,19-20>{}{activated}}}] ++(0,1) -- ++(0,1) node[contact]{};
+  \begin{pgfonlayer}{background}
+    \visible<2-3>{
+      \draw[fill=LBlue,LBlue](bs) circle (0.4);
+    }
+    \visible<3-6,18-20>{
+      \draw[fill=LBlue,LBlue](k11) circle (0.4);
+      \draw[fill=LBlue,LBlue](k12) circle (0.4);
+      \draw[fill=LBlue,LBlue](k13) circle (0.4);
+      \draw[fill=LBlue,LBlue](k14) circle (0.4);
+    }
+    \visible<5-7>{
+      \draw[fill=LBlue,LBlue](b2) circle (0.4);
+    }
+    \visible<6-10>{
+      \draw[fill=LBlue,LBlue](k21) circle (0.4);
+      \draw[fill=LBlue,LBlue](k22) circle (0.4);
+      \draw[fill=LBlue,LBlue](k23) circle (0.4);
+      \draw[fill=LBlue,LBlue](k24) circle (0.4);
+    }
+    \visible<9-11>{
+      \draw[fill=LBlue,LBlue](b3) circle (0.4);
+    }
+    \visible<10-14>{
+      \draw[fill=LBlue,LBlue](k31) circle (0.4);
+      \draw[fill=LBlue,LBlue](k32) circle (0.4);
+      \draw[fill=LBlue,LBlue](k33) circle (0.4);
+      \draw[fill=LBlue,LBlue](k34) circle (0.4);
+    }
+    \visible<13-15>{
+      \draw[fill=LBlue,LBlue](b4) circle (0.4);
+    }
+    \visible<14-18>{
+      \draw[fill=LBlue,LBlue](k41) circle (0.4);
+      \draw[fill=LBlue,LBlue](k42) circle (0.4);
+      \draw[fill=LBlue,LBlue](k43) circle (0.4);
+      \draw[fill=LBlue,LBlue](k44) circle (0.4);
+    }
+    \visible<17-19>{
+      \draw[fill=LBlue,LBlue](b1) circle (0.4);
+    }
+  \end{pgfonlayer}
+\end{tikzpicture}}
+\par
+Copyright (C) 2018 by Luis Paulo Laus, laus at utfpr.edu.br
+\end{center}
+\end{frame}
+\end{document}
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/doc/latex/tikz-relay/doc/BeamerAnimation.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/tikz-relay/doc/tikz-relay-doc.pdf
===================================================================
(Binary files differ)

Index: trunk/Master/texmf-dist/doc/latex/tikz-relay/doc/tikz-relay-doc.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tikz-relay/doc/tikz-relay-doc.pdf	2018-02-06 23:59:08 UTC (rev 46555)
+++ trunk/Master/texmf-dist/doc/latex/tikz-relay/doc/tikz-relay-doc.pdf	2018-02-07 00:03:14 UTC (rev 46556)

Property changes on: trunk/Master/texmf-dist/doc/latex/tikz-relay/doc/tikz-relay-doc.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/tikz-relay/doc/tikz-relay-doc.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tikz-relay/doc/tikz-relay-doc.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/tikz-relay/doc/tikz-relay-doc.tex	2018-02-07 00:03:14 UTC (rev 46556)
@@ -0,0 +1,809 @@
+%% This is file `tikz-relay-doc.tex'
+%% Version: 1.0
+%% Version date: 2018-02-05
+%% 
+%% Copyright (C) 2018 by Luis Paulo Laus, laus at utfpr.edu.br
+%%
+%% This package can be redistributed and/or modified under the terms
+%% of the LaTeX Project Public License distributed from CTAN
+%% archives in directory macros/latex/base/lppl.txt; either
+%% version 1 of the License, or (at your option) any later version,
+%% with `The Package' referring to the software `tikzlibrarysfc.code.tex' and its
+%% accompanying documentation and `The Copyright Holder' referring to the
+%% person Luis Paulo Laus.
+%% 
+%% 
+%% IMPORTANT NOTICE: 
+%% 
+%% For error reports, comments or suggestions in case of UNCHANGED 
+%% versions send mail to:
+%% laus at utfpr.edu.br
+%% 
+%%
+\documentclass[a4paper]{ltxdoc}
+\usepackage[hyphens]{url}
+\usepackage[pdfborder={0 0 0}]{hyperref}
+\usepackage[version=latest]{pgf}
+\usepackage{calc,listings,tikz,units}
+
+\usepackage{hyperref}
+\hypersetup{%
+	colorlinks=false, % use true to enable colors below:
+	linkcolor=blue,%red,
+	filecolor=blue,%magenta,
+	urlcolor=blue,%cyan,
+	citecolor=blue,
+	pdfborder=0 0 0,
+}
+
+% We need lots of libraries\ldots
+\usetikzlibrary{backgrounds,circuits.logic.IEC}
+
+\newif\ifgdccodebasic
+\newif\ifgdccodeogdf
+
+\usepackage[a4paper,left=2.25cm,right=2.25cm,top=2.5cm,bottom=2.5cm,nohead]{geometry}
+\usepackage{amsmath,amssymb}
+\usepackage{xxcolor}
+%% \usepackage{pifont}
+%\usepackage{tgpagella} % no ligatures (test)
+\usepackage{makeidx}
+\usepackage{enumitem}
+\usepackage[T1]{fontenc}
+\usepackage[latin9]{inputenc}
+
+
+\input{pgfmanual-en-macros}    % Borrowed from TikZ/PGF
+
+\makeindex
+
+\makeatletter
+\renewcommand*\l at section[2]{%
+  \ifnum \c at tocdepth >\z@
+    \addpenalty\@secpenalty
+    \addvspace{1.0em \@plus\p@}%
+    \setlength\@tempdima{2.5em}%
+    \begingroup
+      \parindent \z@ \rightskip \@pnumwidth
+      \parfillskip -\@pnumwidth
+      \leavevmode \bfseries
+      \advance\leftskip\@tempdima
+      \hskip -\leftskip
+      #1\nobreak\hfil \nobreak\hb at xt@\@pnumwidth{\hss #2}\par
+    \endgroup
+  \fi}
+\renewcommand*\l at subsection{\@dottedtocline{2}{2.5em}{3.3em}}
+\renewcommand*\l at subsubsection{\@dottedtocline{3}{5.8em}{4.2em}}
+\def\@pnumwidth{2.2em}
+\makeatother
+
+
+% Global styles:
+\tikzset{
+  every plot/.style={prefix=plots/pgf-},
+  shape example/.style={
+    color=black!30,
+    draw,
+    fill=yellow!30,
+    line width=.5cm,
+    inner xsep=2.5cm,
+    inner ysep=0.5cm}
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% This file really starts here, all the above is for pgfmanual 
+% compatibility
+% \usetikzlibrary{circuits.ee.IEC.relay} % used in examples
+\input ../../tikz-relay/tex/tikzlibrarycircuits.ee.IEC.relay.code
+\tikzset{circuit symbol unit=2.5mm}
+\sloppy
+
+% counter for automatic placement
+\newcount\xpos
+\newcount\ypos
+
+\begin{document}
+
+\title{Typesetting Electrical Wiring Diagrams for \emph{Relay} Control Systems with \LaTeX{} and \tikzname{}}
+\author{Luis Paulo Laus\\e-mail: \texttt{laus at utfpr.edu.br}}
+\date{Version: 1.0, Version date: 2018-02-05}
+
+\maketitle
+
+\section{Abstract}
+
+This package contains a collection of symbols for typesetting electrical wiring diagrams for relay control systems. The symbols are meant to be in agreement with international standard IEC~60\,617 which is worldwide adopted with perhaps the exception of USA. It extends and modify, when needed, the \tikzname-libray |circuits.ee.IEC|. A few non-standard symbols are also included mainly to be used in presentations, particularly with |beamer| package.
+
+\section{Introduction}
+Relay control system has been gradually replaced by PLC (Programable Controllers) software. However, small automation systems are usually implemented using relay control systems and the descriptions of PLC connection to external components are done using the same symbols as in relay control systems. Relay control systems are traditionally introduced in the very begin of industrial automation disciplines. This package provides symbols to represent those systems accordingly to IEC~60\,617. 
+
+Very unfortunately, the author has no access to the current version of that standard. The standards consulted during the elaboration of this package are:
+\begin{itemize}
+\item IEC~60\,617-2/1996 Graphical symbols for diagrams -- Part 2: Symbol elements, qualifying symbols and other symbols having general application;
+\item IEC~60\,617-4/1996 Graphical symbols for diagrams -- Part 4: Passive components;
+\item IEC~60\,617-8/1996 Graphical symbols for diagrams -- Part 8: Measuring instruments, lamps and signalling devices;
+\item IEC~60\,617-7/1996 Graphical symbols for diagrams -- Part 7: Switchgear, controlgear and protective devices.
+\end{itemize}
+All of the aforementioned standards have been withdrawn and correspond to edition~2 of IEC~60\,617. The up-to-date edition, at the moment this document was written, is IEC~60\,617:2012~DB. The author trust that the symbols in this package have not been modified between versions, but without access to the new edition it is impossible to say for sure. One indication that improves confidence in the up-to-dateness of this package is the fact that the current editions is based in editions~2 and 3 and the blunt fact that symbols, once adopted, tend to remain unchanged over time. There are also other libraries with free access\footnote{See, for instance, \url{https://www.tracepartsonline.net/(S(0eaztjeawef0onrm1hm4i10k))/}.} that show symbols with the same form they appear herein. Please, report any inaccuracy and out-to-date symbols.
+
+You can also help if you have access to the current standard and can verify and report the accuracy of the information presented herein.
+
+The international standard IEC~60\,617 is worldwide adopted with perhaps the exception of USA which uses NEMA -- National Electrical Manufacturers Association. If you are interested in NEMA standard you should refer to |tikz-ladder| package. This package is meant to be used for PLC programming, but can also be used for relay control systems.
+
+
+\section{Relay Library}
+\begin{pgflibrary}{circuits.ee.IEC.relay}
+This library provides graphics for electrical wiring diagrams for relay control systems according to the international standard IEC~60\,617. The library was written to extend the \tikzname\-library |circuit.ee.IEC|. The reader is urged to read the Section~``Circuit Libraries'' of \tikzname\ manual.
+This library defines the following key:
+
+\begin{key}{/tikz/circuit ee IEC relay}
+This key should be passed as an option to a picture or a scope that contains a diagram. It will do some internal setups.
+\end{key}
+
+\begin{key}{/tikz/activated}
+Adding this key to a contact symbol will ``activate the contact'' so that a |make contact| will close, a |break contact| will open and a |change-over contact| will change. The ``activated'' symbols are not in accordance with IEC~60\,617 because contact shall be drawn in the deactivated position, but sometimes we need to illustrate how a circuit works and this comes in handy. The main purpose is for \beamer\ presentations, see Section~\ref{sec:beamer} for details and further examples. Compare deactivated (normal) and activated break contact:
+\begin{codeexample}[width=3cm]
+\tikz[circuit ee IEC relay]
+  \draw (0,0) to[break contact] (0,1.5)
+        (1,0) to[break contact,activated] (1,1.5);
+\end{codeexample}
+\end{key}
+
+\begin{key}{/tikz/term=\opt{|[|\meta{options}|]|\meta{angle}|:|}\meta{text}}
+  This key is meant to place text information about the upper terminal of the component. It has nearly the same effect as the |label| key, only the placement position is change and following style is used additionally and automatically:
+  \begin{stylekey}{/tikz/every term (initially {font=\string\scriptsize})}
+    Set this style to configure the styling of term 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. For a detailed discussion of the |label| option refer to the \tikzname\ manual.
+  
+  The use of this key is exemplified in Section~\ref{sec:labels}.
+\end{key}
+
+\begin{key}{/tikz/term'=\opt{|[|\meta{options}|]|\meta{angle}|:|}\meta{text}}
+  This key is similar to |term|, but it is meant to place text information about the lower terminal of the component. It has nearly the same effect as the |label| key, only the placement position is change and following style is used additionally and automatically:
+  \begin{stylekey}{/tikz/every term' (initially {font=\string\scriptsize})}
+    Set this style to configure the styling of term' 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. For a detailed discussion of the |label| option refer to the \tikzname\ manual.
+  
+  The use of this key is exemplified in Section~\ref{sec:labels}.
+\end{key}
+
+\begin{key}{/tikz/term''=\opt{|[|\meta{options}|]|\meta{angle}|:|}\meta{text}}
+  This key is similar to |term|, but it is meant to place text information about the upper left terminal of the component mainly for |change over contact|. It has nearly the same effect as the |label| key, only the placement position is change and following style is used additionally and automatically:
+  \begin{stylekey}{/tikz/every term'' (initially {font=\string\scriptsize})}
+    Set this style to configure the styling of term'' 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. For a detailed discussion of the |label| option refer to the \tikzname\ manual.
+  
+  The use of this key is exemplified in Section~\ref{sec:labels}.
+\end{key}
+
+\end{pgflibrary}
+
+
+\section{Convention}
+In this library, the |mid| anchor is used to place annotations, which are secondary symbols placed on top of another symbol, on contacts and the |north| or |south| anchor on |relay coil|. The key |info|, as described in Section~``Circuit Libraries'' of \tikzname\ manual, is used to place the component identification. Observe that the |info| has to be provide for the annotation, if any, or for the symbol itself if the annotation is placed at right side of the symbol. The keys |term|, |term'| and |term''| are used to place terminal numbers by the side of component terminals. See Section~\ref{sec:labels} for details and examples.
+
+\section{Symbols}
+The symbols in this library are:
+\begin{center}
+\begin{tabular}{lcc}
+\emph{key} & IEC~60\,617 \emph{number} & \emph{Appearance}\\
+|/tikz/resistor| & 04-01-01 &
+\tikz[circuit ee IEC relay] \draw (0,0) to[resistor] (0,1);\\
+|/tikz/fuse| & 07-21-01 &
+\tikz[circuit ee IEC relay] \draw (0,0) to[fuse] (0,1);\\
+|/tikz/inductor| & 04-A3-01 &
+\tikz[circuit ee IEC relay,set inductor graphic = inductor IEC relay graphic] \draw (0,0) to[inductor] (0,1);\\
+|/tikz/bulb| & 08-10-01 &
+\tikz[circuit ee IEC relay] \draw (0,0) to[bulb] (0,1);\\
+|/tikz/magnetic sensor| & 02-08-02 &
+\tikz[circuit ee IEC relay] \draw (0,0) to[magnetic sensor] (0,1);\\
+|/tikz/thermic sensor| & 02-08-01 &
+\tikz[circuit ee IEC relay] \draw (0,0) to[thermic sensor] (0,1);\\
+|/tikz/make contact| & 07-02-01 &
+\tikz[circuit ee IEC relay] \draw (0,0) to[make contact] (0,1);\\
+|/tikz/break contact| & 07-02-03 &
+\tikz[circuit ee IEC relay] \draw (0,0) to[break contact] (0,1);\\
+|/tikz/change over contact| & 07-02-04 &
+\tikz[circuit ee IEC relay] \draw (0,0) to[change over contact] (0,1);\\
+|/tikz/relay coil| & 07-15-01 &
+\tikz[circuit ee IEC relay] \draw (0,0) to[relay coil] (0,1);\\
+|/tikz/proximity sensor coil| & 07-19-01 &
+\tikz[circuit ee IEC relay] \draw (0,0) to[proximity sensor coil] (0,1);
+\end{tabular}
+\end{center}
+
+Three symbols, |resistor|, |inductor| and |bulb| are already defined in \tikzname-library |circuits.ee.IEC|. They are redefined here because their proportion was not in agreement with IEC~60\,617. The symbols |inductor| is listed in Annex~A implying it is deleted and should appear in old diagrams or documentation explaining is it obsolete. To use this symbol set the option \verb|set inductor graphic = inductor IEC relay graphic| either globally with |tikzset| or locally in the options diagram list.
+
+``Change over contact'' is short for ``change-over break before make contact''. The symbols |make contact|, |break contact| and |change over contact| can be activated (the contact changes the position) and this feature is needed for creating presentations. See Section~\ref{sec:beamer} for details.
+
+This list may look short, but several other symbols are possible combining these symbols with annotation. In fact, it is annotation that empowers this library.
+
+
+%\tikzset{circuit symbol open/.style={draw=blue,fill=blue!10},circuit symbol filled/.style={fill=blue,draw},circuit symbol lines/.style={draw=orange},circuit symbol wires/.style={ultra thick,draw=violet}}
+
+\subsection{Annotation for coils}
+The |relay coil| can be used alone or combined with annotations to form:
+\begin{center}
+\begin{tikzpicture}[circuit ee IEC relay,thick,x=20\tikzcircuitssizeunit,y=3\tikzcircuitssizeunit]
+  \global\xpos=0
+  \global\ypos=0
+  \foreach \x in {, slow operating, slow releasing, slow operating and slow releasing, high speed, mechanically latched, alternating current,solenoid valve}
+  {
+     \ifnum \xpos>2 \global\xpos=0 \global\advance\ypos by 3 \fi
+     \node[below] at (\the\xpos,-\the\ypos) {\verb|\x|};
+     \draw (\the\xpos,-\the\ypos) to[relay coil={\x}] (\the\xpos,2-\the\ypos);
+     \global\advance\xpos by 1
+  }
+\end{tikzpicture}
+\end{center}
+
+\subsection{Annotation for contacts}
+The contacts can be used alone or combined with annotations to form:
+\begin{center}
+\begin{tikzpicture}[circuit ee IEC relay,thick,x=14\tikzcircuitssizeunit,y=3\tikzcircuitssizeunit]
+  \global\xpos=0
+  \global\ypos=0
+  \foreach \x in {, manually operated, push button, pull switch, turn switch,  var push button, emergency switch, position switch, proximity switch, roller, thermal switch, level switch, circuit breaker}
+  {
+     \ifnum \xpos>4 \global\xpos=0 \global\advance\ypos by 3 \fi
+     \node[below] at (\the\xpos,-\the\ypos) {\verb|\x|};
+     \draw (\the\xpos,-\the\ypos) to[make contact={\x}] (\the\xpos,2-\the\ypos);
+     \global\advance\xpos by 1
+  }
+\end{tikzpicture}
+\end{center}
+Temperature sensitive switch is indicated by either the Greek capital letter $\Theta$ or by the operating temperature conditions written at the right side of the contact and it can be achieved using the |info'| key. It is also usual to indicate pressure sensitive switch with roman letter P or by the operating pressure conditions in the same way.
+
+
+\subsection{Annotation self-placement}
+For contacts, the |mid| anchor is used to place the annotation at correct position. For instance, a |push button| applied to all kinds of contacts produces:
+\begin{center}
+\begin{tikzpicture}[circuit ee IEC relay,thick,x=10\tikzcircuitssizeunit,y=3\tikzcircuitssizeunit]
+  \global\xpos=0
+  \global\ypos=0
+  \foreach \x/\s in {make contact, make contact/activated, break contact, break contact/activated, change over contact, change over contact/activated}
+  {
+     \ifnum \xpos>5 \global\xpos=0 \global\advance\ypos by 3 \fi
+     \draw (\the\xpos,-\the\ypos) to[\x={push button,\s}] (\the\xpos,2-\the\ypos);
+     \global\advance\xpos by 1
+  }
+\end{tikzpicture}
+\end{center}
+
+In the case of a |position switch|, the orientation is also adjusted with the help of |input| anchor:
+\begin{center}
+\begin{tikzpicture}[circuit ee IEC relay,thick,x=10\tikzcircuitssizeunit,y=3\tikzcircuitssizeunit]
+  \global\xpos=0
+  \global\ypos=0
+  \foreach \x/\s in {make contact, make contact/activated, break contact, break contact/activated, change over contact, change over contact/activated}
+  {
+     \ifnum \xpos>5 \global\xpos=0 \global\advance\ypos by 3 \fi
+     \draw (\the\xpos,-\the\ypos) to[\x={position switch,\s}] (\the\xpos,2-\the\ypos);
+     \global\advance\xpos by 1
+  }
+\end{tikzpicture}
+\end{center}
+
+
+\subsection{Change over contact}
+Change over contact, or more exactly, ``change-over break before make contact'' is the only contact in this library that has three terminals. The bottom and top right terminal are connected in the usual way, namely, using the command |to|. To allow the user access to the top left terminal, an anchor named\footnote{The same name convention adopted in \tikzname-library |circuits.ee.IEC| is used here: the symbol default orientations make the component appear as rotated $90^{\circ}$ clockwise. The terminals on the left (bottom in the normal orientation) are named inputs and anchors with names starting with |input| are automatically placed. The terminals on the right (top in the normal orientation) are the outputs and anchors with names starting with |output| are automatically placed.} |output 1| is automatically placed. To use this anchor, the contact has to be named. The reference is available in the same and subsequent paths. Therefore, 
+
+\begin{codeexample}[width=3cm]
+\begin{tikzpicture}[circuit ee IEC relay,thick]
+  \draw (0,0) to[change over contact={name=sw1}] ++(0,2) coordinate(n1)
+        (sw1.output 1) -- (sw1.output 1 |- n1);
+  \draw[<-,red,thin] (sw1.output 1) -- ++(-0.5,0)
+        node[left]{3$^{\mathrm{rd}}$ term.};
+\end{tikzpicture}
+\end{codeexample}
+
+\noindent{}where \verb|(n1)| is used to store the coordinates of the second point making it possible to draw a vertical line with the same vertical level\footnote{In this case, the second point coordinates are known to be \verb|(0,2)|, but in general it is a good idea to use the command |coordinate| to store the information for future use. This allows for the contact to be moved easily when needed.}. The second part of the |\draw| command just draws a line from |(sw1.output 1)| to \verb!(sw1.output 1 |- n1)!, a point with $x$ coordinate equal to |(sw1.output 1)|${}_{x}$ and $y$ coordinate equal to |(n1)|${}_{y}$. Refer to Section~``Coordinates at Intersections'' of \tikzname\ manual for details. This example also uses relative points; refer to Section~``Special Syntax for Specifying Points'' of \tikzname\ manual for details. The use of relative coordinates and anchor allows the easy repositioning of the elements. Keep in mind that:
+\begin{codeexample}[width=3cm]
+\begin{tikzpicture}[thick]
+  \coordinate (n1) at (0,0); \coordinate(n2) at (1.3,1);
+  \draw node[red]{$\times$}
+    (n1) -- (n1 |- n2) node[draw=violet]{} node[above left] {\verb!|-!} -- (n2)
+    (n1) -- (n1 -| n2) node[draw=orange]{} node[below right]{\verb!-|!} -- (n2)
+    node[blue]{$\times$};
+\end{tikzpicture}
+\end{codeexample}
+
+\section{Labels\label{sec:labels}}
+You can place information at the left side of a symbol using |info| and at the right side with |info'|. Note that, if the symbol has an annotation at is left side and you want to use |info|, you have to use |info| in the annotation. The same is valid for |info'| if the annotation is at the right side of the symbol. 
+For instance, a relay named K1 is labelled as:
+\begin{codeexample}[width=2.5cm]
+\tikz[circuit ee IEC relay,thick]
+  \draw (0,0) to[relay coil={info=K1}] (0,1);
+\end{codeexample}
+\noindent{}but a slow operating relay coil has to be labelled in the |slow operating| key as:
+\begin{codeexample}[width=2.5cm]
+\tikz[circuit ee IEC relay,thick]
+  \draw (0,0) to[relay coil={slow operating={info=K2}}] (0,1);
+\end{codeexample}
+\noindent{}failing to do so produces incorrect labelling position as:
+\begin{codeexample}[width=2.5cm]
+\tikz[circuit ee IEC relay,thick,red]
+  \draw (0,0) to[relay coil={slow operating,info=K2}] (0,1);
+\end{codeexample}
+\noindent{}In the last case, the |info| is applied to |relay coil|, not to the annotation |slow operating|.
+
+On the other hand, if the annotation is placed at right of the symbol, like a solenoid valve, the |info| is placed in the symbol itself (not in the annotation):
+\begin{codeexample}[width=3cm]
+\tikz[circuit ee IEC relay,thick]
+  \draw (0,0) to[relay coil={solenoid valve,info=Y2}] (0,1);
+\end{codeexample}
+
+The same reasoning applies to the right side using |info'| key: if there is an annotation at the right side, use the |info'| inside the annotation key:
+\begin{codeexample}[width=4.5cm]
+\tikz[circuit ee IEC relay,thick]
+  \draw (0,0)
+    to[relay coil={solenoid valve={info'={[blue]RELEASE}},info=Y2}] (0,1);
+\end{codeexample}
+\noindent{}but if there is no annotation or the annotation is on the left side, use the |info'| inside the symbol:
+\begin{codeexample}[width=3.5cm]
+\tikz[circuit ee IEC relay,thick]
+  \draw (0,0)
+    to[relay coil={slow operating={info=K2},info'={[blue]START}}] (0,1);
+\end{codeexample}
+
+It also possible to label the terminals for assembling reference. There are three specially designed keys for it:
+
+\begin{description}[align=right,leftmargin=14mm,labelwidth=12mm,labelsep=2mm]
+\item [{term}] places a label at the top right side of the symbol. It is meant to identify the top terminal. Because of \tikzname\ convention, an anchor named |output| is placed on this terminal;
+\item [{term'}] places a label at the bottom right side of the symbol. It is meant to identify the bottom terminal. Because of \tikzname\ convention, an anchor named |input| is placed on this terminal;
+\item [{term''}] places a label at the top left side of the symbol. It is meant to identify the top left terminal of a change over contact. Because of \tikzname\ convention, an anchor named |output 1| is placed on this terminal. Key term'' places the label such that a line to |output 1| can be drawn vertically or horizontally without crossing the label.
+\end{description}
+Each one of these three keys can be individually styled using the style, e.g., |every term'/.style|.
+
+A slow operating relay:
+\begin{codeexample}[width=2.5cm]
+\tikz[circuit ee IEC relay,thick]
+  \draw (0,0) to[relay coil={slow operating={info=K2},term=A1,term'=A2}] (0,1);
+\end{codeexample}
+A change over contact of the same relay:
+\begin{codeexample}[width=2.5cm]
+\tikz[circuit ee IEC relay,thick]
+  \draw (0,0) to[change over contact={info=K2,
+     term=34,term'=31,term''=32}] (0,1);
+\end{codeexample}
+
+
+\section{Design Guidance\label{sec:guidance}}
+This section brings some recommendations that reflect the way I produce diagrams for relay control systems. It may or may not work for you. Feel free to e-mail me if you have better ideas.
+
+The first thing to consider is that, as the manual says, ``\tikzname\ \emph{ist kein Zeichenprogramm}'' which translates to ``\tikzname\ \emph{is not a drawing program}''. You shall start with a draft of you diagram and then codify it using \tikzname. Generally, a handmade pencil sketch will do. In this draft, you shall use node names for future reference. For instance, the |contact| named |N1| below is used as a connection point for the latching contact of relay $K_1$; contacts |N0L| and |N24L| are used for power rails (left side).
+
+\begin{codeexample}[width=2.5cm]
+\begin{tikzpicture}[circuit ee IEC relay,thick]
+  \draw (0,0)
+    node[contact,name=N0L]{}
+    to [relay coil={info=$K_1$}] ++(0,1)
+    to [break contact={thermal switch={info=$F_R$}}] ++(0,1)
+    to [break contact={push button={info=$b_0$}}] ++(0,1)
+    node[contact,name=N1]{}
+    to [make contact={push button={info=$b_1$}}] ++(0,1)
+    node[contact,name=N24L]{};
+  \node[left,red] at(N1) {N1};
+  \node[left,red] at(N0L) {N0L};
+  \node[left,red] at(N24L) {N24L};
+\end{tikzpicture}
+\end{codeexample}
+
+The second thing to consider is that |tikz-relay| uses the |\tikzcircuitssizeunit| to keep all figures proportional. Therefore, when you consider any dimension related to symbol size it is good idea to set that dimension in respect to |\tikzcircuitssizeunit|, i.e., using |\tikzcircuitssizeunit| as the unit of length. The default value of |\tikzcircuitssizeunit| is 7\,pt or approximately 2.46\,mm and it can be set by the |circuit symbol unit| key among several other keys. You can think of |\tikzcircuitssizeunit| as the module size $M$ in IEC~60\,617. 
+Most symbols presented in the IEC~60\,617 are draw using $M=\unit[2.5]{mm}$. This can be achieved placing the command \verb|\tikzset{circuit symbol unit=2.5mm}| in the document preamble which changes |\tikzcircuitssizeunit| to \the\tikzcircuitssizeunit\ document wide (not too different from the default value though). You can establish your own length unit and set $x$ and $y$ to that length unit. In this way you will be working on a grid; if it is too big or too small you will have to change a single declaration.
+
+Finishing up the previous example, the |x| grid is set to five |\tikzcircuitssizeunit| to allow horizontal space for labels and |y| grid is set to four |\tikzcircuitssizeunit| because the symbols used in control circuit schematics are two |\tikzcircuitssizeunit| tall, so there will be one |\tikzcircuitssizeunit| above and below the symbol. Starting at |N1|, the latching contact of $K_1$ is placed one horizontal length unit aside $b_1$.
+
+\begin{codeexample}[width=4.1cm]
+\begin{tikzpicture}[circuit ee IEC relay,thick,
+    x=5\tikzcircuitssizeunit,y=4\tikzcircuitssizeunit]
+  \draw (0,0)
+    node[contact,name=N0L]{}
+    to [relay coil={info=$K_1$}] ++(0,1)
+    to [break contact={thermal switch={info=$F_R$}}] ++(0,1)
+    to [break contact={push button={info=$b_0$}}] ++(0,1)
+    node[contact,name=N1]{}
+    to [make contact={push button={info=$b_1$}}] ++(0,1)
+    node[contact,name=N24L]{};
+  \draw (N1) -- ++(1,0)
+    to [make contact={info=$K_1$}] ++(0,1)
+    node[contact,name=N24R]{};
+% power rails
+  \draw (N24L) ++(-0.8,0) node[left]{$\unit[+24]{V}$} -- (N24R) -- ++(0.3,0)
+        (N0L) ++(-0.8,0) node[left]{$\unit[0]{V}$} -- (N0L -| N24R) -- ++(0.3,0);
+\end{tikzpicture}
+\end{codeexample}
+\noindent{}Power rails are placed using named nodes. This is not really necessary since the beginning and end of the power rails lines can be determined easily because we are working on a grid. 
+
+Because of the direction chosen when the symbols were first defined in \tikzname, we start from the bottom moving to the top of the diagram. This is not mandatory, although changing the direction requires that all symbols and annotations are negatively scale, for instance, the last example would be:
+
+\begin{codeexample}[width=4.1cm]
+\begin{tikzpicture}[circuit ee IEC relay,thick,
+    x=5\tikzcircuitssizeunit,y=4\tikzcircuitssizeunit,
+    every circuit symbol/.style={scale=-1},
+    every circuit annotation/.style={scale=-1}]
+  \draw (0,0)
+    node[contact,name=N24L]{}
+    to [make contact={push button={info=$b_1$}}] ++(0,-1)
+    node[contact,name=N1]{}
+    to [break contact={push button={info=$b_0$}}] ++(0,-1)
+    to [break contact={thermal switch={info=$F_R$}}] ++(0,-1)
+    to [relay coil={info=$K_1$}] ++(0,-1)
+    node[contact,name=N0L]{};
+  \draw (1,0)
+    node[contact,name=N24R]{}
+    to [make contact={info=$K_1$}] ++(0,-1) -- (N1);
+% power rails
+  \draw (N24L) ++(-0.8,0) node[left]{$\unit[+24]{V}$} -- (N24R) -- ++(0.3,0)
+        (N0L) ++(-0.8,0) node[left]{$\unit[0]{V}$} -- (N0L -| N24R) -- ++(0.3,0);
+\end{tikzpicture}
+\end{codeexample}
+\noindent{}where \verb|every circuit symbol/.style={scale=-1}| and \verb|every circuit annotation/.style={scale=-1}| were used to scale the symbols and annotations, respectively. This example produces the very same diagram, but we start at the top and work down to the bottom.
+
+\subsection{Some tricks}
+Power circuits schematics use a more diverse variety of symbol height than control circuit schematics. Thus, it is better to set the grid to a smaller value. This allows for a higher control over the symbols distance. For each symbol, consider its height and allow some extra space between symbols.
+
+Some symbols like relay coils for power circuits schematics are not available, thus we can draw a square by the side of the relay contacts connecting it to the right most contact using a dashed line. The |mid| anchor is perfect for that. Actually, we shall start at the |mid| anchor of the right most contact and draw a dashed line to the left using relative coordinates, at the end of the dashed line we place a square node with no text inside, but with a label above (or left) identifying the relay coil.
+
+The inductors look a bit odd: the semicircles end in very sharp corners. It is better to change the |line joint| to |bevel|. 
+
+You can use different styles for |info| and |info'|, and also for |term|, |term'| and |term''|, but it is usually a bad idea. It is normally best to set a style for one of these keys and copy it to the others.
+
+For example, a star-delta motor starter has power circuit schematic like:
+
+% Power Circuit Schematic
+
+\begin{codeexample}[width=4.5cm]
+\begin{tikzpicture}[circuit ee IEC relay,thick,
+    x=\tikzcircuitssizeunit,
+    y=1.2\tikzcircuitssizeunit,
+    every inductor/.style={line join=bevel},
+    every term/.style={gray,font=\scriptsize},
+    every term'/.style=every term,
+    every term''/.style=every term]
+  \draw (0,0)
+    to[make contact={term=1,term'=2}] ++(0,4)
+    -- ++(0,1)
+    node[contact,name=N1R]{}
+    -- ++(0,4)
+    to [inductor={name=LR,term=1,term'=4}] ++(0,5) 
+    node[contact,name=N2R]{}
+    to [thermic sensor={info=$F_R$,term=1,term'=2}] ++(0,3)
+    to [make contact={term=1,term'=2}] ++(0,4)
+    to [fuse={info={$\unit[3\times5]{A}$}}] ++(0,4)
+    node[above]{R};
+  \draw (0,0) -- ++(4,0) node[contact]{}
+    to[make contact={term=3,term'=4}] ++(0,4) 
+    -- ++(0,1)
+    node[contact,name=N1S]{}
+    -- ++(0,4)
+    to [inductor={name=LS,term=2,term'=5}] ++(0,5) 
+    node[contact,name=N2S]{}
+    to [thermic sensor={term=3,term'=4}] ++(0,3)
+    to[make contact={term=3,term'=4}] ++(0,4)
+    to [fuse] ++(0,4)
+    node[above]{S};
+  \draw (4,0) -- ++(4,0)
+    to[make contact={name=K2T,term=5,term'=6}] ++(0,4) 
+    -- ++(0,1)
+    node[contact,name=N1T]{}
+    -- ++(0,4)
+    to [inductor={name=LT,term=3,term'=6}] ++(0,5) 
+    node[contact,name=N2T]{}
+    to [thermic sensor={term=5,term'=6}] ++(0,3)
+    to[make contact={name=K1T,term=5,term'=6}] ++(0,4)
+    to [fuse] ++(0,4)
+    node[above]{T};
+  \draw
+    (N1R) -- ++(2,0)
+    to[make contact={term=3,term'=4}] ++(0,4) |- (N2S)
+    (N1S) -- ++(2,0)
+    to[make contact={name=K3T,term=5,term'=6}] ++(0,4) |- (N2T)
+    (N1T) -| ++(2,-6) -| ++(-15,6) -- ++(3,0)
+    to[make contact={term=1,term'=2}] ++(0,4) |- (N2R);
+  \draw[dashed](K1T.mid) --++(-10,0) % relay coils
+     node[left,draw,solid,minimum size=3mm,label={[above]:$K_1$}]{};
+  \draw[dashed](K2T.mid) --++(-10,0)
+     node[left,draw,solid,minimum size=3mm,label={[above]:$K_2$}]{};
+  \draw[dashed](K3T.mid) --++(-10,0)
+     node[left,draw,solid,minimum size=3mm,label={[above]:$K_3$}]{};
+\end{tikzpicture}
+\end{codeexample}
+
+Control circuit schematics can use a much bigger grid space because the symbol heights are the same, i.e. always two units of length. When setting the |x| unit of length, you need to consider the space occupied by labels and annotations.
+
+Sometimes we need to place a symbol upside-down. This is the case of the star-delta motor starter control circuit schematic in which a change-over contact is used to change from $K_2$ to $K_3$. To achieved the correct orientation, a negative |y| scaling is set by |yscale=-1|. This contact is named |t1| for future reference, in this case, to access the |output 1| and connect it to $K_2$. If you think it is against IEC~60\,617 rules to drawn the change-over contact upset-down you will end up with a terrible layout because of the position of the common terminal.
+
+The relay coil $K_3$ is also placed using top-down direction and, consequently, it has to be negatively scaled (mirrored). In this case, we need to mirror the symbol in both |x| and |y| direction so the terminal and symbol identification will be correctly located. So, |scale=-1| is used.
+
+The power rails are drawn using grid coordinates. A fuse is place in the top power rail.
+
+% Control Circuit Schematic 
+
+\begin{codeexample}[]
+\begin{tikzpicture}[circuit ee IEC relay,thick,
+    x=9\tikzcircuitssizeunit,
+    y=5\tikzcircuitssizeunit,
+    every term/.style={gray,font=\scriptsize},
+    every term'/.style=every term,
+    every term''/.style=every term]
+  \draw (0,0)
+    node[contact]{}
+    to [relay coil={info=$K_1$,term=A1,term'=A2}] ++(0,1) -- ++(0,1)
+    node[contact,name=N1]{}
+    to [break contact={thermal switch={info=$F_R$},term=21,term'=22}] ++(0,1)
+    to [break contact={push button={info=$b_0$},term=11,term'=12}] ++(0,1)
+    node[contact,name=N2]{}
+    to [make contact={push button={info=$b_1$},term=13,term'=14}] ++(0,1)
+    node[contact,name=N3]{};
+  \draw (N2) -- ++(1,0) 
+    to [make contact={info=$K_1$,term=13,term'=14}] ++(0,1)
+    node[contact]{};
+  \draw (1,0)
+    node[contact]{}
+    to [relay coil={slow operating={info=$T_1$},term=A1,term'=A2}] ++(0,1) -- ++(0,1)
+    node[contact,name=N4]{} --(N1);
+  \draw (N4) -- ++(2,0)
+    to [change over contact={yscale=-1,info=$T_1$,name=t1,term=24,term'=21,term''=22}] ++(0,-1)
+    to [relay coil={scale=-1,info=$K_3$,term=A1,term'=A2}] ++(0,-1)
+    node[contact]{};
+  \draw (2,0)
+    node[contact]{}
+    to [relay coil={info=$K_2$,term=A1,term'=A2}] ++(0,1) |- (t1.output 1);
+  \draw(-0.8,0) node[left]{$\unit[0]{V}$} -- +(4.2,0) % power rails
+       (-0.8,5) node[left]{$\unit[+24]{V}$} to[fuse={info={$\unit[2]{A}$}}] (N3) -- +(3.4,0);
+\end{tikzpicture}
+\end{codeexample}
+
+
+\subsection{Beamer presentation  with overlay\label{sec:beamer}}
+
+Perhaps the most important feature of \beamer\ is its capacity of creating a series of slides based in one slide for, e.g., showing one concept step by step. It is called \emph{overlay}.  Unfortunately, \beamer\ overlay and \tikzname\ present some compatibility issues when overlay macros are typed in the options list of a \tikzname\ command. This can be solved setting two \tikzname\ keys that takes advantage of the fact that |\pgfkeysalso| doesn't change the path. 
+
+\begin{codeexample}[code only]
+\tikzset{ % alt and visible (overlay)
+  alt/.code args={<#1>#2#3}{%
+    \alt<#1>{\pgfkeysalso{#2}}{\pgfkeysalso{#3}}
+  },
+  visible/.code args={<#1>#2}{%
+    \alt<#1>{\pgfkeysalso{#2}}{}
+  }
+}
+\end{codeexample}
+Once these keys are in place, they can be used instead of |\visible| and |\alt| macros with a syntax slightly different. The following example creates three slides to illustrate how a push button works with a |break contact| and, when pushed, |break contact| is |activated|. Bellow, the result is shown side by side:
+
+\begin{codeexample}[width=6.8cm,render instead={\begin{tikzpicture}[circuit ee IEC relay,thick,y=3\tikzcircuitssizeunit]
+  \node[ground={point down,name=gnd}] at(0,0) {};
+  \draw(gnd)
+    to ++ (0,0.5)
+    to[bulb={info=L1,fill=yellow}] ++ (0,1)
+    to[break contact={push button={info=B1}}] ++ (0,1)
+    -- ++ (0,0.5) node[current direction={point up}]{} node[right]{12V};
+  \node[red,font=\small\itshape,below=4mm] at(gnd) {slide 1};
+  \node[ground={point down,name=gnd}] at(2cm,0) {};
+  \draw(gnd)
+    to ++ (0,0.5)
+    to[bulb={info=L1}] ++ (0,1)
+    to[break contact={push button={info=B1},activated}] ++ (0,1)
+    -- ++ (0,0.5) node[current direction={point up}]{} node[right]{12V};
+  \node[red,font=\small\itshape,below=4mm] at(gnd) {slide 2};
+  \node[ground={point down,name=gnd}] at(4cm,0) {};
+  \draw(gnd)
+    to ++ (0,0.5)
+    to[bulb={info=L1,fill=yellow}] ++ (0,1)
+    to[break contact={push button={info=B1}}] ++ (0,1)
+    -- ++ (0,0.5) node[current direction={point up}]{} node[right]{12V};
+  \node[red,font=\small\itshape,below=4mm] at(gnd) {slide 3};
+\end{tikzpicture}}]\begin{tikzpicture}[circuit ee IEC relay,thick,
+    y=3\tikzcircuitssizeunit]
+  \node[ground={point down,name=gnd}] at(0,0) {};
+  \draw(gnd)
+    to ++ (0,0.5)
+    to[bulb={info=L1,visible={<1,3>{fill=yellow}}}] ++ (0,1)
+    to[break contact={push button={info=B1},
+       alt={<2>{activated}{}}}] ++ (0,1)
+    -- ++ (0,0.5) node[current direction={point up}]{}
+    node[right]{12V};
+\end{tikzpicture}
+\end{codeexample}
+\noindent{}
+During the presentation you can say that ``pressing B1 the lamp~L1 turns off, releasing it turns L1 on again''. One cool trick is to move forward and backward between slides~2 and 3.
+
+To draw this example, we start with the schematics and once it is ready the animation part is done by placing keys |visible| and |alt| in suitable locations. The filling of L2 is visible only in slide~1 and 3. B1 appears differently depending on the slide. For slides~1 and 3, B1 is a normal break contact (closed), but in slide~2 it is an ``activated'' break contact which is open. Note that key |bulb| receives or not the key |fill|. Similarly, the key |break contact| receives or not the key |activated| (the key |visible| could be used instead of |alt|).
+
+When developing ``animations'' you may need to know the overlay number. It can be printed, say in the frame title, using macro |\overlaynumber|; type this in the document preamble:
+
+\begin{codeexample}[code only]
+\makeatletter
+\newcommand*{\overlaynumber}{\number\beamer at slideinframe}
+\makeatother
+\end{codeexample}
+
+If you need to generate a handout, the |visible| argument will be drawn as well as the \emph{first} argument of |alt| no matter what is the overlay specification (the thing between |<| and |>| signs). Therefore, the above example would appear like:
+\begin{codeexample}[width=2.5cm]
+\begin{tikzpicture}[circuit ee IEC relay,thick,
+    y=3\tikzcircuitssizeunit]
+  \node[ground={point down,name=gnd}] at(0,0) {};
+  \draw(gnd)
+    to ++ (0,0.5)
+    to[bulb={info=L1,fill=yellow}] ++ (0,1)
+    to[break contact={push button={info=B1},activated}] ++ (0,1)
+    -- ++ (0,0.5) node[current direction={point up}]{}
+    node[right]{12V};
+\end{tikzpicture}
+\end{codeexample}
+\noindent{}and it does not match any of the previous slides\footnote{It is just wrong.}. Keep in mind that you shall finish the schematic in the regular form (without any activated contact) and then |activated| can be inserted always as the second argument of |alt|; the first argument shall be left empty, e.g., \verb|alt{<1,3>{}{activated}}|. Alternatively, you can use, e.g., \verb|alt{<1,3>{activated=false}{activated=true}}|. The slide numbers enlisted in the overlay specification shall correspond to slides in which the contact is \emph{not} activated.
+
+The ``correct'' diagram that works both in |beamer| and |handout| modes is:
+
+\begin{codeexample}[code only]
+\begin{tikzpicture}[circuit ee IEC relay,thick,
+    y=3\tikzcircuitssizeunit]
+  \node[ground={point down,name=gnd}] at(0,0) {};
+  \draw(gnd)
+    to ++ (0,0.5)
+    to[bulb={info=L1,visible={<1,3>{fill=yellow}}}] ++ (0,1)
+    to[break contact={push button={info=B1},
+       alt={<1,3>{}{activated}}}] ++ (0,1)
+    -- ++ (0,0.5) node[current direction={point up}]{}
+    node[right]{12V};
+\end{tikzpicture}
+\end{codeexample}
+\noindent{}The handout will show a lighted lamp in series with a disactivated break contact. If you do not want that the lamp appears lighted, use \verb|alt={<2>{}{fill=yellow}}| instead of |visible|. So, the lamp will not the lighted in slide~2 (implying it will in slides~1 and 3) and it will not be lighted in the handout as well.
+
+A complete, though minimalistic, example is provided in a separated file\footnote{This file should be in the same folder you have found this document.}: ``BeamerAnimation.tex''. In this example, a four-step sequencer is animated. A total of twenty slides are generated based in a single schematic.
+
+
+\subsection{Adjusting the diagram size}
+
+The diagram size can be adjusted setting |x| and |y| units. Mainly, you change those to control the space between symbols, not the diagram size in total\footnote{The total size will change, but it is more like a collateral damage than intentional deed.}. If your diagram is too big, consider to use a landscape page. For presentations, adjustments can be done using |resizebox|.
+
+It is not a good idea to change the diagram size setting |\tikzcircuitssizeunit| using |circuit symbol unit|. |\tikzcircuitssizeunit| shall be set document wise in the document preamble and kept unchanged.
+ 
+
+\section{Shapes}
+This is rather technical material, but it is here anyway and you may use it to modify or extend the library. It that case, if you need help, please do not hesitate in contacting the author. 
+
+Several anchors are defined for each symbol (or, more exactly, shapes). The mechanism \tikzname\ uses to place anchors and define borders is sophisticated. It takes into account the line width (or an optional additional space defined by |outer sep|\footnote{See Section~``Common Options: Separations, Margins, Padding and Border Rotation'' of \tikzname\ manual.})  to place the anchors just on the line border of the symbol. Something called ``anchor border'' is also defined in the same manner. Anchor border is use to place labels around the symbol and interrupt the line directed to the symbol. Remember that a symbol is usually placed by command |to| which interrupts the path line the symbol is placed on. It makes perfect sense for symbols that encloses some area, like |proximity sensor coil| and |relay coil| and even for symbols that, although they do not enclose an area, defines some intuitive border, like |magnetic sensor| and |thermic sensor|. But it makes little sense for contacts.
+
+Contacts can be considered an especial case of symbols. They have no defined border, no intuitive notion of inside and outside. The \tikzname-library |circuits| places them in a category called ``wires''. The normal anchors (north, south, south west, etc.) have no practical use. Even so, they need a |center| anchor, used to place the symbol, and a |mid| anchor, used to place annotations. They also need an anchor border in order to interrupt the line during placement (and also for label positioning). The anchor border controls the gap that appears on the line. Thus, it is defined as the symbol size. In other words, the symbol size is an invisible border a bit smaller than the actual symbol because the inclined line which represents the movable contact have an addendum that protrudes beyond the symbol border.
+
+Outer separation is also undesired when placing contact. If the normal treatment were dispensed for contacts, setting the outer separation to any positive number would disrupt de line connected to the symbol. Instead of setting the outer separation to zero, the shape code that produces contacts simply disregards the outer separation when drawing the component. 
+
+All symbols below look rotated $90^{ \circ}$ because \tikzname\ uses this orientation to place the symbol in a line.
+
+
+\begin{codeexample}[]
+\begin{tikzpicture}[circuit ee IEC relay]
+  \node[name=s, shape=make contact IEC relay, shape example, inner xsep=1cm, inner ysep=1cm, minimum width=6cm, minimum height=3cm]{};
+  \foreach \anchor/\placement in {center/above, 30/above right, 358/below right,
+      north/above, north east/above, north west/above,
+      south/below, south east/below, south west/below,
+      east/left, west/right, mid/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}[]
+\begin{tikzpicture}[circuit ee IEC relay]
+  \node[name=s, activated, shape=make contact IEC relay, shape example, inner xsep=1cm, inner ysep=1cm, minimum width=6cm, minimum height=3cm]{};
+  \foreach \anchor/\placement in {center/above, 30/above right, 358/below right,
+      north/above, north east/above, north west/above,
+      south/below, south east/below, south west/below,
+      east/left, west/right, mid/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}[]
+\begin{tikzpicture}[circuit ee IEC relay]
+  \node[name=s, shape=break contact IEC relay, shape example, inner xsep=1cm, inner ysep=1cm, minimum width=6cm, minimum height=3cm]{};
+  \foreach \anchor/\placement in {center/above, 30/above right, 358/below right,
+      north/above, north east/above, north west/above,
+      south/below, south east/below, south west/below,
+      east/left, west/right, mid/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}[]
+\begin{tikzpicture}[circuit ee IEC relay]
+  \node[name=s, activated, shape=break contact IEC relay, shape example, inner xsep=1cm, inner ysep=1cm, minimum width=6cm, minimum height=3cm]{};
+  \foreach \anchor/\placement in {center/above, 30/above right, 358/below right,
+      north/above, north east/above, north west/above,
+      south/below, south east/below, south west/below,
+      east/left, west/right, mid/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}[]
+\begin{tikzpicture}[circuit ee IEC relay]
+  \node[name=s, shape=change over contact IEC relay, shape example, inner xsep=1cm, inner ysep=1cm, minimum width=6cm, minimum height=6cm]{};
+  \foreach \anchor/\placement in {center/above, 30/above right, 358/below right,
+      north/above, north east/above, north west/above,
+      south/below, south east/below, south west/below,
+      east/left, west/right, mid/above, input/left,output/right, output 1/below right}
+  \draw[shift=(s.\anchor)] plot[mark=x] coordinates{(0,0)} node[\placement] {\scriptsize\texttt{(s.\anchor)}};
+\end{tikzpicture}
+\end{codeexample}
+
+
+\begin{codeexample}[]
+\begin{tikzpicture}[circuit ee IEC relay]
+  \node[name=s, activated, shape=change over contact IEC relay, shape example, inner xsep=1cm, inner ysep=1cm, minimum width=6cm, minimum height=6cm]{};
+  \foreach \anchor/\placement in {center/above, 30/above right, 358/below right,
+      north/above, north east/above, north west/above,
+      south/below, south east/below, south west/below,
+      east/left, west/right, mid/above, input/left,output/right, output 1/below right}
+  \draw[shift=(s.\anchor)] plot[mark=x] coordinates{(0,0)} node[\placement] {\scriptsize\texttt{(s.\anchor)}};
+\end{tikzpicture}
+\end{codeexample}
+
+
+\begin{codeexample}[]
+\begin{tikzpicture}[circuit ee IEC relay]
+  \node[name=s, shape=magnetic sensor IEC relay, shape example, inner xsep=1cm, inner ysep=1cm, minimum width=6cm, minimum height=6cm]{};
+  \foreach \anchor/\placement in {center/above, 15/above right, 330/below right,
+      north/above, north east/above, north west/above,
+      south/below, south east/below, south west/below,
+      east/left, west/right, mid/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}[]
+\begin{tikzpicture}[circuit ee IEC relay]
+  \node[name=s, shape=thermic sensor IEC relay, shape example, inner xsep=1cm, inner ysep=1cm, minimum width=6cm, minimum height=6cm]{};
+  \foreach \anchor/\placement in {center/above, 15/above right, 330/below right,
+      north/above, north east/above, north west/above,
+      south/below, south east/below, south west/below,
+      east/left, west/right, mid/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}[]
+\begin{tikzpicture}[circuit ee IEC relay]
+  \node[name=s, shape=proximity sensor coil IEC relay, shape example, inner xsep=1cm, inner ysep=1cm, minimum width=6cm, minimum height=6cm]{};
+  \foreach \anchor/\placement in {center/above, 30/above right, 358/below right,
+      north/above, north east/above, north west/above,
+      south/below, south east/below, south west/below,
+      east/left, west/right, input/left, output/right}
+  \draw[shift=(s.\anchor)] plot[mark=x] coordinates{(0,0)} node[\placement] {\scriptsize\texttt{(s.\anchor)}};
+\end{tikzpicture}
+\end{codeexample}
+
+
+\section{Known Issues}
+This library is base in withdrawn standards and the current standardized symbols might be different. It is also rather incomplete; so many symbols are missing, though in my best knowledge the missing symbols are rarely used. Let me know if you need a symbol, I will do my best to implement it.
+
+If you want the report a bug or have any suggestion, please feel free to send me an e-mail. Contact details are in the first page. Every feedback is important.
+
+
+\section{Final Remarks}
+
+This package has been tested and used for more than three years, so I do believe it is mature by now and I decided to share it. On the other hand, I was the only person who used it, therefore idiosyncrasies were not detected.
+
+Any comments, suggestions, request for a missing symbols and feedbacks are welcomed. I will do my best to answer as soon as possible. My contact e-mail is in the first page.
+
+It should be great if someone with experience in writing \tikzname\ libraries could have a look in the code and point out error or improvements to be made. 
+
+\end{document}
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/doc/latex/tikz-relay/doc/tikz-relay-doc.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/tikz-relay/tex/tikzlibrarycircuits.ee.IEC.relay.code.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tikz-relay/tex/tikzlibrarycircuits.ee.IEC.relay.code.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/tikz-relay/tex/tikzlibrarycircuits.ee.IEC.relay.code.tex	2018-02-07 00:03:14 UTC (rev 46556)
@@ -0,0 +1,709 @@
+%% This is file `tikzlibrarycircuits.ee.IEC.relay.code.tex'
+%% Version: 1.0
+%% Version date: 2018-02-05
+%% 
+%% Copyright (C) 2018 by Luis Paulo Laus, laus at utfpr.edu.br
+%%
+%% This package can be redistributed and/or modified under the terms
+%% of the LaTeX Project Public License distributed from CTAN
+%% archives in directory macros/latex/base/lppl.txt; either
+%% version 1 of the License, or (at your option) any later version,
+%% with `The Package' referring to the software
+%% `tikzlibrarycircuits.ee.IEC.relay.code.tex'
+%% and its accompanying documentation and `The Copyright Holder'
+%% referring to the person Luis Paulo Laus.
+%% 
+%% 
+%% IMPORTANT NOTICE: 
+%% 
+%% For error reports, comments or suggestions in case of UNCHANGED 
+%% versions send mail to:
+%% laus at utfpr.edu.br
+%% 
+%%
+%% Change History:
+%% 1.0: 05 February 2018: Original Version
+%% 
+\usetikzlibrary{circuits.ee.IEC}
+
+\makeatletter
+
+%% if contacts are activated or not, default is not
+\newif\ifcontact at activated
+\contact at activatedfalse
+
+\def\tikz at lib@relay at lar@plain[#1]#2\pgf at stop{\tikzset{label={[label position=357,every term/.try,#1]#2}}}
+\def\tikz at lib@relay at lbr@plain[#1]#2\pgf at stop{\tikzset{label={[label position=183,every term'/.try,#1]#2}}}
+\def\tikz at lib@relay at lal@plain[#1]#2\pgf at stop{\tikzset{label={[label position=63,every term''/.try,#1]#2}}}
+
+\pgfdeclareshape{magnetic sensor IEC relay}
+{
+  \savedanchor\northeast{%
+    \pgfmathsetlength\pgf at xa{\pgfkeysvalueof{/pgf/outer xsep}}%
+    \pgfmathsetlength\pgf at xb{\pgfkeysvalueof{/pgf/minimum width}}%
+    \pgf at x=\pgf at xa%
+    \advance\pgf at x by .5\pgf at xb%
+    \pgfmathsetlength\pgf at ya{\pgfkeysvalueof{/pgf/outer ysep}}%
+    \pgf at y=\pgf at ya%
+  }
+  \savedanchor\southwest{%
+    \pgfmathsetlength\pgf at xa{\pgfkeysvalueof{/pgf/outer xsep}}%
+    \pgfmathsetlength\pgf at xb{\pgfkeysvalueof{/pgf/minimum width}}%
+    \pgf at x=-\pgf at xa%
+    \advance\pgf at x by -.5\pgf at xb%
+    \pgfmathsetlength\pgf at ya{\pgfkeysvalueof{/pgf/outer ysep}}%
+    \pgfmathsetlength\pgf at yb{\pgfkeysvalueof{/pgf/minimum height}}%
+    \pgf at y=-\pgf at ya%
+    \advance\pgf at y by-\pgf at yb%
+  }
+
+  \inheritsavedanchors[from=circle ee]
+  \inheritanchor[from=circle ee]{center}
+  \inheritanchor[from=circle ee]{south}
+  \inheritanchor[from=circle ee]{east}
+  \inheritanchor[from=circle ee]{west}
+  \inheritanchor[from=circle ee]{south east}
+  \inheritanchor[from=circle ee]{south west}
+  \inheritanchor[from=circle ee]{input}
+  \inheritanchor[from=circle ee]{output}
+  \inheritanchor[from=rectangle ee]{north}
+  \inheritanchor[from=rectangle ee]{north east}
+  \inheritanchor[from=rectangle ee]{north west}
+  \anchor{mid}{\centerpoint\advance\pgf at y by-\radius}
+
+  \anchorborder{%
+    \ifdim\pgf at y<0pt%
+      \pgf at xa=\pgf at x%
+      \pgf at ya=\pgf at y%
+      \edef\pgf at marshal{%
+        \noexpand\pgfpointborderellipse
+        {\noexpand\pgfqpoint{\the\pgf at xa}{\the\pgf at ya}}
+        {\noexpand\pgfqpoint{\radius}{\radius}}%
+      }%
+      \pgf at marshal%
+    \else%
+      % tricky... simpilfy to the origin...
+      \pgf at xc=\pgf at x%
+      \pgf at yc=\pgf at y%
+      \pgf at process{\northeast}%
+      \advance\pgf at y by0.5pt%
+      \pgf at xa=\pgf at x%
+      \pgf at ya=\pgf at y%
+      \pgf at process{\pgfpointborderrectangle{\pgfqpoint{\pgf at xc}{\the\pgf at yc}}{\pgfqpoint{\pgf at xa}{\pgf at ya}}}%
+    \fi%
+  }
+  
+  \backgroundpath{
+    \pgf at process{\pgfpointadd{\southwest}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{\pgfkeysvalueof{/pgf/outer ysep}}}}
+    \pgf at xa=\pgf at x
+    \pgfpathmoveto{\pgfqpoint{\pgf at xa}{0pt}}
+    \pgfpatharc{0}{180}{\pgf at xa}
+    \pgfusepathqstroke
+  }
+}
+
+\pgfdeclareshape{thermic sensor IEC relay}
+{
+  \savedanchor\northeast{%
+    \pgfmathsetlength\pgf at xa{\pgfkeysvalueof{/pgf/outer xsep}}%
+    \pgfmathsetlength\pgf at xb{\pgfkeysvalueof{/pgf/minimum width}}%
+    \pgf at x=\pgf at xa%
+    \advance\pgf at x by .5\pgf at xb%
+    \pgfmathsetlength\pgf at ya{\pgfkeysvalueof{/pgf/outer ysep}}%
+    \pgf at y=\pgf at ya%
+  }
+  \savedanchor\southwest{%
+    \pgfmathsetlength\pgf at xa{\pgfkeysvalueof{/pgf/outer xsep}}%
+    \pgfmathsetlength\pgf at xb{\pgfkeysvalueof{/pgf/minimum width}}%
+    \pgf at x=-\pgf at xa%
+    \advance\pgf at x by -.5\pgf at xb%
+    \pgfmathsetlength\pgf at ya{\pgfkeysvalueof{/pgf/outer ysep}}%
+    \pgfmathsetlength\pgf at yb{\pgfkeysvalueof{/pgf/minimum height}}%
+    \pgf at y=-\pgf at ya%
+    \advance\pgf at y by-\pgf at yb%
+  }
+  \savedanchor\centerpoint{%
+    \pgf at x=0pt%
+    \pgfmathsetlength\pgf at ya{\pgfkeysvalueof{/pgf/outer ysep}}%
+    \pgfmathsetlength\pgf at yb{\pgfkeysvalueof{/pgf/minimum height}}%
+    \pgf at y=-\pgf at ya%
+    \advance\pgf at y by-\pgf at yb%
+  }
+
+  \anchor{center}{\pgfpointorigin}
+  \anchor{mid}{\centerpoint}
+  \inheritanchor[from=rectangle ee]{north}
+  \inheritanchor[from=rectangle ee]{south}
+  \inheritanchor[from=rectangle ee]{east}
+  \inheritanchor[from=rectangle ee]{west}
+  \inheritanchor[from=rectangle ee]{north east}
+  \inheritanchor[from=rectangle ee]{north west}
+  \inheritanchor[from=rectangle ee]{south east}
+  \inheritanchor[from=rectangle ee]{south west}
+  \anchor{input}{%
+    \pgf at process{\southwest}%
+    \pgf at y=0pt%
+  }
+  \anchor{output}{%
+    \pgf at process{\northeast}%
+    \pgf at y=0pt%
+  }
+
+  \anchorborder{%
+    \ifdim\pgf at y<0pt%
+      \pgf at xc=\pgf at x%
+      \pgf at yc=\pgf at y%
+      \pgf at process{\southwest}%
+      \pgf at xa=-\pgf at x%
+      \pgf at ya=-\pgf at y%
+      \pgf at process{\pgfpointborderrectangle{\pgfqpoint{\pgf at xc}{\the\pgf at yc}}{\pgfqpoint{\pgf at xa}{\pgf at ya}}}%
+    \else%
+      % tricky... simpilfy to the origin...
+      \pgf at xc=\pgf at x%
+      \pgf at yc=\pgf at y%
+      \pgf at process{\northeast}%
+      \advance\pgf at y by0.5pt%
+      \pgf at xa=\pgf at x%
+      \pgf at ya=\pgf at y%
+      \pgf at process{\pgfpointborderrectangle{\pgfqpoint{\pgf at xc}{\the\pgf at yc}}{\pgfqpoint{\pgf at xa}{\pgf at ya}}}%
+    \fi%
+  }
+  
+  \backgroundpath{
+    \pgf at process{\pgfpointadd{\southwest}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{\pgfkeysvalueof{/pgf/outer ysep}}}}
+    \pgf at xa=\pgf at x
+    \pgf at xb=-\pgf at x \pgf at yb=\pgf at y
+    \pgfpathmoveto{\pgfqpoint{\pgf at xa}{0pt}}
+    \pgfpathlineto{\pgfqpoint{\pgf at xa}{\pgf at yb}}
+    \pgfpathlineto{\pgfqpoint{\pgf at xb}{\pgf at yb}}
+    \pgfpathlineto{\pgfqpoint{\pgf at xb}{0pt}}
+    \pgfusepathqstroke
+  }
+}
+
+% af:=30*PI/180; a:=1/3; l:=a+2/cos(af); x:=l*cos(af)-1; y:=l*sin(af);c:=tan(af); float([x,y,c, l]);
+\pgfdeclareshape{make contact IEC relay}
+{
+  \savedanchor\northeast{%
+    \pgfmathsetlength\pgf at xa{\pgfkeysvalueof{/pgf/minimum width}}%
+    \pgf at x=.5\pgf at xa%
+    \pgfmathsetlength\pgf at y{\pgfkeysvalueof{/pgf/minimum height}}%
+  }
+  \savedanchor\southwest{%
+    \pgfmathsetlength\pgf at xa{\pgfkeysvalueof{/pgf/minimum width}}%
+    \pgf at x=-.5\pgf at xa%
+    \pgf at y=0pt%
+  }
+  \savedanchor\centerpoint{%
+    \pgf at x=0pt
+    \ifcontact at activated
+      \pgf at y=0pt%
+    \else
+      \pgfmathsetlength\pgf at ya{\pgfkeysvalueof{/pgf/minimum height}}%
+      \pgf at y=0.5773503\pgf at ya%
+    \fi
+  }
+
+  \anchor{center}{\pgfpointorigin}
+  \anchor{mid}{\centerpoint}
+  \inheritanchor[from=rectangle ee]{north}
+  \inheritanchor[from=rectangle ee]{south}
+  \inheritanchor[from=rectangle ee]{east}
+  \inheritanchor[from=rectangle ee]{west}
+  \inheritanchor[from=rectangle ee]{north east}
+  \inheritanchor[from=rectangle ee]{north west}
+  \inheritanchor[from=rectangle ee]{south east}
+  \inheritanchor[from=rectangle ee]{south west}
+  \anchor{input}{\southwest}
+  \anchor{output}{%
+    \pgf at process{\northeast}%
+    \pgf at xa=\pgf at x%
+    \pgf at process{\southwest}%
+    \pgf at x=\pgf at xa%
+  }
+
+  \anchorborder{%
+    \ifdim\pgf at y<0pt%
+      % tricky... simpilfy to the origin...
+      \pgf at xc=\pgf at x%
+      \pgf at yc=\pgf at y%
+      \pgf at process{\southwest}%
+      \advance\pgf at y by-0.5pt%
+      \pgf at xa=\pgf at x%
+      \pgf at ya=\pgf at y%
+      \pgf at process{\pgfpointborderrectangle{\pgfqpoint{\pgf at xc}{\the\pgf at yc}}{\pgfqpoint{-\pgf at xa}{-\pgf at ya}}}%
+    \else%
+      \pgf at xc=\pgf at x%
+      \pgf at yc=\pgf at y%
+      \pgf at process{\pgfpointborderrectangle{\pgfqpoint{\pgf at xc}{\the\pgf at yc}}{\northeast}}%
+    \fi%
+  }
+  
+  \backgroundpath{
+    \pgf at process{\northeast}
+    \pgf at xa=-\pgf at x
+    \ifcontact at activated
+      \pgf at xb=\pgf at x \pgf at yb=0pt
+    \else
+      \pgf at xb=1.288675\pgf at x \pgf at yb=1.321367\pgf at y
+    \fi
+    % Fixed point
+    \pgfpathmoveto{\pgfqpoint{\pgf at xa}{0pt}}
+    % Moving point
+    \pgfpathlineto{\pgfqpoint{\pgf at xb}{\pgf at yb}}
+    \pgfusepathqstroke
+  }
+}
+
+
+% af:=arctan(1/3); a:=1-2*tan(af); l:=a+2/cos(af); x:=l*cos(af)-1; y:=-l*sin(af); c:=-tan(af); float([x,y,c]);
+% af:=arctan(1/3); a:=1-2*tan(af); l:=a+2/cos(af); af:=arctan(2/3); x:=l*cos(af)-1; y:=l*sin(af); c:=-tan(af); float([x,y,c]);
+\pgfdeclareshape{break contact IEC relay}
+{
+  \savedanchor\northeast{%
+    \pgfmathsetlength\pgf at xa{\pgfkeysvalueof{/pgf/minimum width}}%
+    \pgf at x=.5\pgf at xa%
+    \pgf at y=0pt%
+  }
+  \savedanchor\southwest{%
+    \pgfmathsetlength\pgf at xa{\pgfkeysvalueof{/pgf/minimum width}}%
+    \pgf at x=-.5\pgf at xa%
+    \pgfmathsetlength\pgf at ya{\pgfkeysvalueof{/pgf/minimum height}}%
+    \pgf at y=-\pgf at ya%
+  }
+  \savedanchor\centerpoint{%
+    \pgf at x=0pt
+    \pgfmathsetlength\pgf at ya{\pgfkeysvalueof{/pgf/minimum height}}%
+    \ifcontact at activated
+      \pgf at y=-0.666667\pgf at ya%
+    \else
+      \pgf at y=-0.333333\pgf at ya%
+    \fi
+  }
+
+  \anchor{center}{\pgfpointorigin}
+  \anchor{mid}{\centerpoint}
+  \inheritanchor[from=rectangle ee]{north}
+  \inheritanchor[from=rectangle ee]{south}
+  \inheritanchor[from=rectangle ee]{east}
+  \inheritanchor[from=rectangle ee]{west}
+  \inheritanchor[from=rectangle ee]{north east}
+  \inheritanchor[from=rectangle ee]{north west}
+  \inheritanchor[from=rectangle ee]{south east}
+  \inheritanchor[from=rectangle ee]{south west}
+  \anchor{input}{%
+    \pgf at process{\southwest}%
+    \pgf at xa=\pgf at x%
+    \pgf at process{\northeast}%
+    \pgf at x=\pgf at xa%
+  }
+  \anchor{output}{\northeast}
+
+  \anchorborder{%
+    \ifdim\pgf at y<0pt%
+      \pgf at xc=\pgf at x%
+      \pgf at yc=\pgf at y%
+      \pgf at process{\southwest}%
+      \pgf at xa=\pgf at x%
+      \pgf at ya=1.354311\pgf at y% maximum distance used to prevent jump
+      \pgf at process{\pgfpointborderrectangle{\pgfqpoint{\pgf at xc}{\the\pgf at yc}}{\pgfqpoint{-\pgf at xa}{-\pgf at ya}}}%
+    \else%
+      % tricky... simpilfy to the origin...
+      \pgf at xc=\pgf at x%
+      \pgf at yc=\pgf at y%
+      \pgf at process{\northeast}%
+      \advance\pgf at y by 0.5pt%
+      \pgf at xa=\pgf at x%
+      \pgf at ya=\pgf at y%
+      \pgf at process{\pgfpointborderrectangle{\pgfqpoint{\pgf at xc}{\the\pgf at yc}}{\pgfqpoint{\pgf at xa}{\pgf at ya}}}%
+    \fi%
+  }
+
+  \backgroundpath{
+    \pgf at process{\southwest}
+    \pgf at xa=-\pgf at x \pgf at ya=\pgf at y
+    \ifcontact at activated
+      \pgf at xb=-1.031466\pgf at x \pgf at yb=1.354311\pgf at y
+    \else
+      \pgf at xb=-1.316228\pgf at x \pgf at yb=0.772076\pgf at y
+    \fi
+    % Fixed
+    \pgfpathmoveto{\pgfqpoint{\pgf at xa}{\pgf at ya}}
+    \pgfpathlineto{\pgfqpoint{\pgf at xa}{0pt}}
+    \pgfusepathqstroke
+    % Moving
+    \pgfpathmoveto{\pgfqpoint{-\pgf at xa}{0pt}}
+    \pgfpathlineto{\pgfqpoint{\pgf at xb}{\pgf at yb}}
+    \pgfusepathqstroke
+  }
+}
+
+
+% af:=arctan(2/3); a:=2*tan(af)-1; l:=a+2/cos(af); x:=l*cos(af)-1; y:=l*sin(af); c:=tan(af); float([x,y/2,c/2]);
+\pgfdeclareshape{change over contact IEC relay}
+{
+  \savedanchor\northeast{%
+    \pgfmathsetlength\pgf at xa{\pgfkeysvalueof{/pgf/minimum width}}%
+    \pgf at x=.5\pgf at xa%
+    \pgfmathsetlength\pgf at y{\pgfkeysvalueof{/pgf/minimum height}}%
+  }
+  \savedanchor\southwest{%
+    \pgfmathsetlength\pgf at xa{\pgfkeysvalueof{/pgf/minimum width}}%
+    \pgf at x=-.5\pgf at xa%
+    \pgf at y=0pt%
+  }
+  \savedanchor\centerpoint{%
+    \pgf at x=0pt
+    \ifcontact at activated
+      \pgf at y=0pt
+    \else
+      \pgfmathsetlength\pgf at ya{\pgfkeysvalueof{/pgf/minimum height}}%
+      \pgf at y=0.333333\pgf at ya%
+    \fi
+  }
+
+  \anchor{center}{\pgfpointorigin}
+  \anchor{mid}{\centerpoint}
+  \inheritanchor[from=rectangle ee]{north}
+  \inheritanchor[from=rectangle ee]{south}
+  \inheritanchor[from=rectangle ee]{east}
+  \inheritanchor[from=rectangle ee]{west}
+  \inheritanchor[from=rectangle ee]{north east}
+  \inheritanchor[from=rectangle ee]{north west}
+  \inheritanchor[from=rectangle ee]{south east}
+  \inheritanchor[from=rectangle ee]{south west}
+  \anchor{input}{\southwest}
+  \anchor{output}{%
+    \pgf at process{\northeast}%
+    \pgf at xa=\pgf at x%
+    \pgf at process{\southwest}%
+    \pgf at x=\pgf at xa%
+  }
+  \anchor{output 2}{% alias for output
+    \pgf at process{\northeast}%
+    \pgf at xa=\pgf at x%
+    \pgf at process{\southwest}%
+    \pgf at x=\pgf at xa%
+  }
+  \anchor{output 1}{\northeast}% the thrird, normaly closed, terminal
+
+  \anchorborder{%
+    \ifdim\pgf at y<0pt%
+      % tricky... simpilfy to the origin...
+      \pgf at xc=\pgf at x%
+      \pgf at yc=\pgf at y%
+      \pgf at process{\southwest}%
+      \advance\pgf at y by-0.5pt%
+      \pgf at xa=\pgf at x%
+      \pgf at ya=\pgf at y%
+      \pgf at process{\pgfpointborderrectangle{\pgfqpoint{\pgf at xc}{\the\pgf at yc}}{\pgfqpoint{-\pgf at xa}{-\pgf at ya}}}%
+    \else%
+      \pgf at xc=\pgf at x%
+      \pgf at yc=\pgf at y%
+      \pgf at process{\pgfpointborderrectangle{\pgfqpoint{\pgf at xc}{\the\pgf at yc}}{\northeast}}%
+    \fi%
+  }
+  
+  \backgroundpath{
+    \pgf at process{\northeast}
+    \pgf at xa=\pgf at x \pgf at ya=\pgf at y
+    \ifcontact at activated
+      \pgf at xb=\pgf at x \pgf at yb=0pt
+    \else
+      \pgf at xb=1.27735\pgf at x \pgf at yb=0.759117\pgf at y
+    \fi
+    % Fixed
+    \pgfpathmoveto{\pgfqpoint{\pgf at xa}{\pgf at ya}}
+    \pgfpathlineto{\pgfqpoint{\pgf at xa}{.5\pgf at ya}}
+    \pgfusepathqstroke
+    % Moving
+    \pgfpathmoveto{\pgfqpoint{-\pgf at xa}{0pt}}
+    \pgfpathlineto{\pgfqpoint{\pgf at xb}{\pgf at yb}}
+    \pgfusepathqstroke
+  }
+}
+
+
+\pgfdeclareshape{proximity sensor coil IEC relay}
+{
+  \inheritsavedanchors[from=rectangle ee]
+  \inheritanchor[from=rectangle ee]{center}
+  \inheritanchor[from=rectangle ee]{north}
+  \inheritanchor[from=rectangle ee]{south}
+  \inheritanchor[from=rectangle ee]{east}
+  \inheritanchor[from=rectangle ee]{west}
+  \inheritanchor[from=rectangle ee]{north east}
+  \inheritanchor[from=rectangle ee]{north west}
+  \inheritanchor[from=rectangle ee]{south east}
+  \inheritanchor[from=rectangle ee]{south west}
+  \inheritanchor[from=rectangle ee]{input}
+  \inheritanchor[from=rectangle ee]{output}
+  \inheritanchorborder[from=rectangle ee]
+  \backgroundpath{
+    \pgf at process{\pgfpointadd{\northeast}{\pgfpointscale{-1}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{\pgfkeysvalueof{/pgf/outer ysep}}}}}
+    \pgf at xa=-\pgf at x \pgf at ya=-\pgf at y
+    \pgf at xb=\pgf at x \pgf at yb=\pgf at y
+    \pgfpathmoveto{\pgfqpoint{\pgf at xa}{0pt}}
+    \pgfpathlineto{\pgfqpoint{0pt}{\pgf at ya}}
+    \pgfpathlineto{\pgfqpoint{\pgf at xb}{0pt}}
+    \pgfpathlineto{\pgfqpoint{0pt}{\pgf at yb}}
+    \pgfpathclose
+    \pgfpathmoveto{\pgfqpoint{0.75\pgf at xa}{0.25\pgf at ya}}
+    \pgfpathlineto{\pgfqpoint{0.75\pgf at xb}{0.25\pgf at ya}}
+    \pgfpathmoveto{\pgfqpoint{0.75\pgf at xa}{0.25\pgf at yb}}
+    \pgfpathlineto{\pgfqpoint{0.75\pgf at xb}{0.25\pgf at yb}}
+    \pgfusepathqstroke
+  }
+}
+
+\makeatother
+
+\tikzset{
+  circuit declare symbol=fuse,
+  circuit declare symbol=magnetic sensor,
+  circuit declare symbol=thermic sensor,
+  circuit declare symbol=change over contact,
+  circuit declare symbol=relay coil,
+  circuit declare symbol=proximity sensor coil,
+  % annotations for contact
+  circuit declare annotation={manually operated}{2.4\tikzcircuitssizeunit}
+  {
+    [transform shape]
+    [-]
+    (\tikzlastnode.mid) edge[circuit symbol lines/.try,to path={-- ++(0,0.8\tikzcircuitssizeunit) ++(0,0.3\tikzcircuitssizeunit) -- ++(0,0.8\tikzcircuitssizeunit)  ++(0,0.3\tikzcircuitssizeunit) -- ++(0,0.8\tikzcircuitssizeunit) ++(0.6\tikzcircuitssizeunit,0) -- ++(-1.2\tikzcircuitssizeunit,0)}] ()
+  },
+  circuit declare annotation={pull switch}{2.9\tikzcircuitssizeunit}
+  {
+    [transform shape]
+    [-]
+    (\tikzlastnode.mid) edge[circuit symbol lines/.try,to path={-- ++(0,0.8\tikzcircuitssizeunit) ++(0,0.3\tikzcircuitssizeunit) -- ++(0,0.8\tikzcircuitssizeunit)  ++(0,0.3\tikzcircuitssizeunit) -- ++(0,0.8\tikzcircuitssizeunit) ++(0.6\tikzcircuitssizeunit,0.5\tikzcircuitssizeunit) -- ++(0,-0.5\tikzcircuitssizeunit) -- ++(-1.2\tikzcircuitssizeunit,0) -- ++(0,0.5\tikzcircuitssizeunit)}] ()
+  },
+  circuit declare annotation={turn switch}{2.9\tikzcircuitssizeunit}
+  {
+    [transform shape]
+    [-]
+    (\tikzlastnode.mid) edge[circuit symbol lines/.try,to path={-- ++(0,0.8\tikzcircuitssizeunit) ++(0,0.3\tikzcircuitssizeunit) -- ++(0,0.8\tikzcircuitssizeunit)  ++(0,0.3\tikzcircuitssizeunit) -- ++(0,0.8\tikzcircuitssizeunit) ++(0.6\tikzcircuitssizeunit,-0.5\tikzcircuitssizeunit) -- ++(0,0.5\tikzcircuitssizeunit) -- ++(-1.2\tikzcircuitssizeunit,0) -- ++(0,0.5\tikzcircuitssizeunit)}] ()
+  },
+  circuit declare annotation={push button}{2.4\tikzcircuitssizeunit}
+  {
+    [transform shape]
+    [-]
+    (\tikzlastnode.mid) edge[circuit symbol lines/.try,to path={-- ++(0,0.8\tikzcircuitssizeunit) ++(0,0.3\tikzcircuitssizeunit) -- ++(0,0.8\tikzcircuitssizeunit)  ++(0,0.3\tikzcircuitssizeunit) -- ++(0,0.8\tikzcircuitssizeunit) ++(0.6\tikzcircuitssizeunit,-0.5\tikzcircuitssizeunit) -- ++(0,0.5\tikzcircuitssizeunit) -- ++(-1.2\tikzcircuitssizeunit,0) -- ++(0,-0.5\tikzcircuitssizeunit)}] ()
+  },
+  circuit declare annotation={var push button}{\tikzcircuitssizeunit}
+  {
+    [transform shape]
+    [-]
+    (\tikzlastnode.mid) edge[circuit symbol lines/.try,line to,->] ++(0,1.25\tikzcircuitssizeunit)
+     ++(-0.7\tikzcircuitssizeunit,1.25\tikzcircuitssizeunit+1.5*\pgflinewidth) edge[circuit symbol lines/.try,line to,line width=1.5*\pgflinewidth] ++(1.4\tikzcircuitssizeunit,0)
+  },
+  circuit declare annotation={emergency switch}{3.7\tikzcircuitssizeunit}
+  {
+    [transform shape]
+    [-]
+    (\tikzlastnode.mid) edge[circuit symbol lines/.try,line join=bevel,to path={-- ++(0,0.6\tikzcircuitssizeunit) ++(0,0.4\tikzcircuitssizeunit) -- ++(0,0.6\tikzcircuitssizeunit) -- ++(-0.75\tikzcircuitssizeunit,0.45\tikzcircuitssizeunit)  -- ++(0.75\tikzcircuitssizeunit,0.45\tikzcircuitssizeunit) -- ++(0,0.6\tikzcircuitssizeunit)}] () edge[circuit symbol open/.try,to path={++(0.8\tikzcircuitssizeunit,3.1\tikzcircuitssizeunit) arc[start angle=27, delta angle=126, radius=0.9\tikzcircuitssizeunit] --cycle}] ()
+  },
+  circuit declare annotation={thermal switch}{2.7\tikzcircuitssizeunit}
+  {
+    [transform shape]
+    [annotation arrow,-]
+    (\tikzlastnode.mid) edge[circuit symbol lines/.try,to path={--++(0,1.4\tikzcircuitssizeunit)--++(\tikzcircuitssizeunit,0)--++(0,\tikzcircuitssizeunit)--++(-\tikzcircuitssizeunit,0)--++(0,\tikzcircuitssizeunit)}] ()
+  },
+  circuit declare annotation={roller}{2.2\tikzcircuitssizeunit}
+  {
+    [transform shape]
+    [-]
+    (\tikzlastnode.mid) edge[circuit symbol lines/.try,to path={-- ++(0,0.9\tikzcircuitssizeunit) ++(0,0.3\tikzcircuitssizeunit) -- ++(0,0.8\tikzcircuitssizeunit)}] () edge[circuit symbol open/.try,to path={++(0,2.5\tikzcircuitssizeunit)  circle(0.5\tikzcircuitssizeunit)  circle(0.05\tikzcircuitssizeunit)}] ()
+  },
+  circuit declare annotation={proximity switch}{2.2\tikzcircuitssizeunit}
+  {
+    [transform shape]
+    [-]
+    (\tikzlastnode.mid) edge[circuit symbol open/.try,to path={-- ++(0,0.5\tikzcircuitssizeunit) ++(0,0.3\tikzcircuitssizeunit) -- ++(0,0.5\tikzcircuitssizeunit) -- ++(-0.85\tikzcircuitssizeunit,0.85\tikzcircuitssizeunit)-- ++(0.85\tikzcircuitssizeunit,0.85\tikzcircuitssizeunit)-- ++(0.85\tikzcircuitssizeunit,-0.85\tikzcircuitssizeunit)-- ++(-0.85\tikzcircuitssizeunit,-0.85\tikzcircuitssizeunit) +(-0.65\tikzcircuitssizeunit,0.65\tikzcircuitssizeunit) --+(0.65\tikzcircuitssizeunit,0.65\tikzcircuitssizeunit) ++(-0.65\tikzcircuitssizeunit,1.05\tikzcircuitssizeunit) --+(1.3\tikzcircuitssizeunit,0)}] ()
+  },
+  circuit declare annotation={level switch}{3.2\tikzcircuitssizeunit}
+  {
+    [transform shape]
+    [-]
+    (\tikzlastnode.mid) edge[circuit symbol lines/.try,to path={-- ++(0,0.9\tikzcircuitssizeunit) ++(0,0.3\tikzcircuitssizeunit) -- +(0,0.8\tikzcircuitssizeunit)}] () edge[circuit symbol open/.try,to path={++(0,3\tikzcircuitssizeunit) ellipse({0.5\tikzcircuitssizeunit} and {\tikzcircuitssizeunit}) ++(0.5\tikzcircuitssizeunit,0) -- ++(0.5\tikzcircuitssizeunit,0)}] ()
+  },
+  circuit declare annotation={position switch}{0pt}
+  {
+    [transform shape]
+    [-]
+    edge[circuit symbol wires/.try,to path={let \p1=(\tikzlastnode.mid), \p2=($(\tikzlastnode.mid) - (\tikzlastnode.input)$), \n2 = {veclen(\x2,\y2)}, \p2= ($0.5*\tikzcircuitssizeunit/\n2*(\p2)$) in ($(\p1)+(\p2)$) -- ++(-\y2,\x2) -- ($(\p1)-(\p2)$)}] ()
+  },
+  circuit declare annotation={circuit breaker}{2.4\tikzcircuitssizeunit}
+  {
+    [transform shape]
+    [-]
+    (\tikzlastnode.south west) edge[circuit symbol lines/.try,to path={++(2.2\tikzcircuitssizeunit,0.2\tikzcircuitssizeunit) -- ++(-0.4\tikzcircuitssizeunit,-0.4\tikzcircuitssizeunit) ++(0.4\tikzcircuitssizeunit,0) -- ++(-0.4\tikzcircuitssizeunit,0.4\tikzcircuitssizeunit)}] ()
+  },
+  % annotations for relay coil
+  circuit declare annotation={solenoid valve}{2.5\tikzcircuitssizeunit}
+  {
+    [transform shape]
+    [-]
+    (\tikzlastnode.south) edge[circuit symbol open/.try,every relay coil/.try,to path={-- ++(0,-.5\tikzcircuitssizeunit) ++(0,-.3\tikzcircuitssizeunit) -- ++(0,-.5\tikzcircuitssizeunit) ++(0,-.3\tikzcircuitssizeunit) -- ++(0,-.4\tikzcircuitssizeunit) --++(\tikzcircuitssizeunit,-0.5\tikzcircuitssizeunit)  --++(0,\tikzcircuitssizeunit) --++(-2\tikzcircuitssizeunit,-\tikzcircuitssizeunit)  --++(0,\tikzcircuitssizeunit) --++(\tikzcircuitssizeunit,-0.5\tikzcircuitssizeunit)}] ()
+  },
+  circuit declare annotation={slow operating}{1\tikzcircuitssizeunit}
+  {
+    [transform shape]
+    [-]
+    (\tikzlastnode.north) edge[circuit symbol open/.try,every relay coil/.try,to path={++(\tikzcircuitssizeunit,-.5\pgflinewidth) --++(0,\tikzcircuitssizeunit) -- ++(-2\tikzcircuitssizeunit,0) --++(0,-\tikzcircuitssizeunit) --cycle}] () edge[circuit symbol open/.try,every relay coil/.try,to path={++(\tikzcircuitssizeunit,-.5\pgflinewidth) --++(-2\tikzcircuitssizeunit,\tikzcircuitssizeunit) ++(0,-\tikzcircuitssizeunit) -- ++(2\tikzcircuitssizeunit,\tikzcircuitssizeunit)}] ()
+  },
+  circuit declare annotation={slow releasing}{1\tikzcircuitssizeunit}
+  {
+    [transform shape]
+    [-]
+    (\tikzlastnode.north) edge[every relay coil/.try,circuit symbol filled/.try,to path={++(\tikzcircuitssizeunit,-.5\pgflinewidth)
+--++(0,\tikzcircuitssizeunit) -- ++(-2\tikzcircuitssizeunit,0) --++(0,-\tikzcircuitssizeunit) --cycle}] ()
+  },
+  circuit declare annotation={slow operating and slow releasing}{2\tikzcircuitssizeunit}
+  {
+    [transform shape]
+    [-]
+    (\tikzlastnode.north) edge[circuit symbol open/.try,every relay coil/.try,to path={++(\tikzcircuitssizeunit,-.5\pgflinewidth) --++(0,\tikzcircuitssizeunit) -- ++(-2\tikzcircuitssizeunit,0) --++(0,-\tikzcircuitssizeunit) --cycle}] () edge[circuit symbol open/.try,every relay coil/.try,to path={++(\tikzcircuitssizeunit,-.5\pgflinewidth) --++(-2\tikzcircuitssizeunit,\tikzcircuitssizeunit) ++(0,-\tikzcircuitssizeunit) -- ++(2\tikzcircuitssizeunit,\tikzcircuitssizeunit)}] () edge[every relay coil/.try,circuit symbol filled,to path={++(\tikzcircuitssizeunit,\tikzcircuitssizeunit-.5\pgflinewidth) --++(0,\tikzcircuitssizeunit) -- ++(-2\tikzcircuitssizeunit,0) --++(0,-\tikzcircuitssizeunit) --cycle}] ()
+  },
+  circuit declare annotation={high speed}{1\tikzcircuitssizeunit}
+  {
+    [transform shape]
+    [-]
+    (\tikzlastnode.north) edge[circuit symbol open/.try,every relay coil/.try,to path={++(0,-.5\pgflinewidth) --++(0,\tikzcircuitssizeunit) --++(\tikzcircuitssizeunit,0) -- ++(0,-\tikzcircuitssizeunit) --++(-2\tikzcircuitssizeunit,0) --++(0,\tikzcircuitssizeunit) --++(\tikzcircuitssizeunit,0)}] ()
+  },
+  circuit declare annotation={mechanically latched}{1.73\tikzcircuitssizeunit}
+  {
+    [transform shape]
+    [-]
+    (\tikzlastnode.north) edge[circuit symbol open/.try,every relay coil/.try,to path={++(\tikzcircuitssizeunit,-.5\pgflinewidth) --++(0,1.73\tikzcircuitssizeunit) -- ++(-2\tikzcircuitssizeunit,0) --++(0,-1.73\tikzcircuitssizeunit) --cycle}] () edge[circuit symbol open/.try,every relay coil/.try,line join=bevel,to path={++(\tikzcircuitssizeunit,-.5\pgflinewidth) --++(-\tikzcircuitssizeunit,1.73\tikzcircuitssizeunit) --++(-\tikzcircuitssizeunit,-1.73\tikzcircuitssizeunit) --cycle}] ()
+  },
+  circuit declare annotation={alternating current}{2\tikzcircuitssizeunit}
+  {
+    [transform shape]
+    [-]
+    (\tikzlastnode.north) edge[circuit symbol open/.try,every relay coil/.try,to path={++(\tikzcircuitssizeunit,-.5\pgflinewidth) -- ++(0,2\tikzcircuitssizeunit) --++(-2\tikzcircuitssizeunit,0) --++(0,-2\tikzcircuitssizeunit) --++(2\tikzcircuitssizeunit,0)
+    (\tikzlastnode.north) ++(0,\tikzcircuitssizeunit-.5\pgflinewidth) arc [start angle=135, end angle=225, radius=0.5\tikzcircuitssizeunit]
+    (\tikzlastnode.north) ++(0,\tikzcircuitssizeunit-.5\pgflinewidth) arc [start angle=-45, end angle=45, radius=0.5\tikzcircuitssizeunit]}] () 
+  },
+}
+
+\tikzset{
+  magnetic sensor IEC relay graphic/.style={
+    circuit symbol wires,
+    circuit symbol size=width 1 height 1,
+    transform shape,
+    shape=magnetic sensor IEC relay,
+    outer sep=0pt,
+    cap=round},
+  thermic sensor IEC relay graphic/.style={
+    circuit symbol wires,
+    circuit symbol size=width 1 height 1,
+    transform shape,
+    shape=thermic sensor IEC relay,
+    outer sep=0pt,
+    cap=round},
+  make contact IEC relay graphic/.style={
+    circuit symbol wires,
+    circuit symbol size=width 2 height 1,
+    transform shape,
+    shape=make contact IEC relay,
+    outer sep=0pt,
+    cap=round},
+  break contact IEC relay graphic/.style={
+    circuit symbol wires,
+    circuit symbol size=width 2 height 1,
+    transform shape,
+    shape=break contact IEC relay,
+    outer sep=0pt,
+    cap=round},
+  change over contact IEC relay graphic/.style={
+    circuit symbol wires,
+    circuit symbol size=width 2 height 2,
+    transform shape,
+    shape=change over contact IEC relay,
+    outer sep=0pt,
+    cap=round},
+  relay coil IEC relay graphic/.style={
+    circuit symbol open,
+    circuit symbol size=width 2 height 4,
+    shape=rectangle ee,
+    transform shape},
+  proximity sensor coil IEC relay graphic/.style={
+    circuit symbol open,
+    circuit symbol size=width 1.6 height 1.6,
+    shape=proximity sensor coil IEC relay,
+    transform shape},
+  % modifications
+  resistor IEC relay graphic/.style={
+    circuit symbol open,
+    circuit symbol size=width 3 height 1,
+    shape=rectangle ee,
+    transform shape
+  },
+  inductor IEC relay graphic/.style={
+    circuit symbol filled,
+    circuit symbol size=width 3 height 1,
+    transform shape,
+    shape=rectangle ee
+  },
+  bulb IEC relay graphic/.style={
+    circuit symbol lines,
+    circuit symbol size=width 2 height 2,
+    shape=generic circle IEC,
+    /pgf/generic circle IEC/before background={
+      \pgfpathmoveto{\pgfpointpolar{-135}{1pt}}
+      \pgfpathlineto{\pgfpointpolar{45}{1pt}}
+      \pgfpathmoveto{\pgfpointpolar{-45}{1pt}}
+      \pgfpathlineto{\pgfpointpolar{135}{1pt}}
+      \pgfusepathqstroke
+    },
+    transform shape
+  },
+  fuse IEC relay graphic/.style={
+    circuit symbol open,
+    circuit symbol size=width 3 height 1,
+    shape=rectangle ee,
+    append after command={%
+      \bgroup
+        edge[circuit symbol wires, to path={%
+          (\tikzlastnode.input) -- (\tikzlastnode.output)
+        }] ()
+      \egroup%
+    },
+    transform shape
+  }
+}
+
+
+\makeatletter
+\tikzset{
+  circuit ee IEC relay/.style=
+  {
+    circuit ee IEC,
+    % modifications
+    set resistor graphic                        = resistor IEC relay graphic,
+    set bulb graphic                            = bulb IEC relay graphic,
+    % aditions
+    set fuse graphic                            = fuse IEC relay graphic,
+    set magnetic sensor graphic                 = magnetic sensor IEC relay graphic,
+    set thermic sensor graphic                  = thermic sensor IEC relay graphic,
+    set make contact graphic                    = make contact IEC relay graphic,
+    set break contact graphic                   = break contact IEC relay graphic,
+        % change-over break before make contact
+    set change over contact graphic             = change over contact IEC relay graphic,
+    set relay coil graphic                      = relay coil IEC relay graphic,
+    set proximity sensor coil graphic           = proximity sensor coil IEC relay graphic,
+    % terminal info
+    term/.code={\pgfutil at ifnextchar[\tikz at lib@relay at lar@plain{\tikz at lib@relay at lar@plain[]}##1\pgf at stop},
+    term'/.code={\pgfutil at ifnextchar[\tikz at lib@relay at lbr@plain{\tikz at lib@relay at lbr@plain[]}##1\pgf at stop},
+    term''/.code={\pgfutil at ifnextchar[\tikz at lib@relay at lal@plain{\tikz at lib@relay at lal@plain[]}##1\pgf at stop},
+    every term/.style={font=\scriptsize},
+    every term'/.style={font=\scriptsize},
+    every term''/.style={font=\scriptsize},
+    activated/.is if=contact at activated,
+    every circuit ee IEC relay/.try
+  }
+}
+\makeatother
+
+\endinput
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/doc/latex/tikz-relay/tex/tikzlibrarycircuits.ee.IEC.relay.code.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/tlpkg/bin/tlpkg-ctan-check
===================================================================
--- trunk/Master/tlpkg/bin/tlpkg-ctan-check	2018-02-06 23:59:08 UTC (rev 46555)
+++ trunk/Master/tlpkg/bin/tlpkg-ctan-check	2018-02-07 00:03:14 UTC (rev 46556)
@@ -618,7 +618,8 @@
     tikz-bayesnet tikz-cd tikz-3dplot tikz-dependency tikz-dimline
     tikz-feynhand tikz-feynman tikz-inet
     tikz-kalender tikz-karnaugh tikz-ladder
-    tikz-opm tikz-optics tikz-palattice tikz-qtree tikz-sfc tikz-timing
+    tikz-opm tikz-optics tikz-palattice tikz-qtree
+    tikz-relay tikz-sfc tikz-timing
     tikzcodeblocks tikzducks tikzinclude tikzmark tikzorbital
     tikzpagenodes tikzpeople tikzpfeile tikzposter tikzscale tikzsymbols
     timbreicmc timetable timing-diagrams tinos tipa tipa-de tipfr

Modified: trunk/Master/tlpkg/tlpsrc/collection-pictures.tlpsrc
===================================================================
--- trunk/Master/tlpkg/tlpsrc/collection-pictures.tlpsrc	2018-02-06 23:59:08 UTC (rev 46555)
+++ trunk/Master/tlpkg/tlpsrc/collection-pictures.tlpsrc	2018-02-07 00:03:14 UTC (rev 46556)
@@ -142,6 +142,7 @@
 depend tikz-page
 depend tikz-palattice
 depend tikz-qtree
+depend tikz-relay
 depend tikz-sfc
 depend tikz-timing
 depend tikzcodeblocks

Added: trunk/Master/tlpkg/tlpsrc/tikz-relay.tlpsrc
===================================================================


More information about the tex-live-commits mailing list