In the TikZ circuit library, is there a symbol for a gas discharge tube?
In the manual I could not find anything regarding this (and the whole symbol list in there seems rather short, anyways).
In the TikZ circuit library, is there a symbol for a gas discharge tube?
In the manual I could not find anything regarding this (and the whole symbol list in there seems rather short, anyways).
Here is a node; it is based upon the circle shape, so you can set its size with the minimum width key.
It is not yet finished (I was not able to use it with the to[...] syntax, and I probably need some advices, because I don't really know how to make this)
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{circuits}
\begin{document}
\makeatletter
\pgfdeclareshape{neon lamp}
{
\inheritsavedanchors[from=circle]
\inheritanchor[from=circle]{center}
\inheritanchor[from=circle]{north}
\inheritanchor[from=circle]{south}
\inheritanchor[from=circle]{east}
\inheritanchor[from=circle]{west}
\inheritanchor[from=circle]{north east}
\inheritanchor[from=circle]{north west}
\inheritanchor[from=circle]{south east}
\inheritanchor[from=circle]{south west}
\inheritanchorborder[from=circle]
\anchor{input}{\pgf@process{\radius} \pgf@x=\z@ \pgf@y=\radius}
\anchor{output}{\pgf@process{\radius} \pgf@y=\radius \pgf@x=2\pgf@y}
\backgroundpath{
\pgf@process{\radius}
\pgfutil@tempdima=\radius
\pgfpathcircle{\pgfqpoint{\pgfutil@tempdima}{\pgfutil@tempdima}}{\pgfutil@tempdima}
\pgfpathmoveto{\pgfpoint{\z@}{\pgfutil@tempdima}}
\pgfpathlineto{\pgfpoint{.8\pgfutil@tempdima}{\pgfutil@tempdima}}
\pgfpathmoveto{\pgfpoint{.8\pgfutil@tempdima}{1.7\pgfutil@tempdima}}
\pgfpathlineto{\pgfpoint{.8\pgfutil@tempdima}{.3\pgfutil@tempdima}}
\pgfpathmoveto{\pgfpoint{2\pgfutil@tempdima}{\pgfutil@tempdima}}
\pgfpathlineto{\pgfpoint{1.2\pgfutil@tempdima}{\pgfutil@tempdima}}
\pgfpathmoveto{\pgfpoint{1.2\pgfutil@tempdima}{1.7\pgfutil@tempdima}}
\pgfpathlineto{\pgfpoint{1.2\pgfutil@tempdima}{.3\pgfutil@tempdima}}
\pgfpathcircle{\pgfqpoint{.55\pgfutil@tempdima}{.4\pgfutil@tempdima}}{.05\pgfutil@tempdima}
}
}
\makeatother
\begin{tikzpicture}
\node[shape=neon lamp,draw] (lamp) {};
\draw (lamp.input) -- ++(-.5,0);
\draw (lamp.output) -- ++(.5,0);
\end{tikzpicture}
\end{document}

Two things are required to get Lionel's node to work like the other circuit components: You need to declare the symbol using circuit declare symbol=<name>, set <name> graphic={shape=<shape name>, draw, transform shape,...}, and you need to construct the shape around the local origin.
Here's one way of doing this (note that I used the circle ee shape as the basis for the new symbol, because it already defines the input and output anchors.

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{circuits, shapes.gates.ee}
\begin{document}
\makeatletter
\pgfdeclareshape{neon lamp shape}
{
\inheritsavedanchors[from=circle ee]
\inheritanchor[from=circle ee]{center}
\inheritanchor[from=circle ee]{north}
\inheritanchor[from=circle ee]{south}
\inheritanchor[from=circle ee]{east}
\inheritanchor[from=circle ee]{west}
\inheritanchor[from=circle ee]{north east}
\inheritanchor[from=circle ee]{north west}
\inheritanchor[from=circle ee]{south east}
\inheritanchor[from=circle ee]{south west}
\inheritanchor[from=circle ee]{input}
\inheritanchor[from=circle ee]{output}
\inheritanchorborder[from=circle ee]
\backgroundpath{
\pgf@process{\radius}
\pgfutil@tempdima=\radius
\pgfpathcircle{\centerpoint}{\pgfutil@tempdima}
\pgfpathmoveto{\pgfpoint{-\pgfutil@tempdima}{0pt}}
\pgfpathlineto{\pgfpoint{-0.2\pgfutil@tempdima}{0pt}}
\pgfpathmoveto{\pgfpoint{-0.2\pgfutil@tempdima}{0.7\pgfutil@tempdima}}
\pgfpathlineto{\pgfpoint{-0.2\pgfutil@tempdima}{-0.7\pgfutil@tempdima}}
\pgfpathmoveto{\pgfpoint{\pgfutil@tempdima}{0pt}}
\pgfpathlineto{\pgfpoint{0.2\pgfutil@tempdima}{0pt}}
\pgfpathmoveto{\pgfpoint{0.2\pgfutil@tempdima}{0.7\pgfutil@tempdima}}
\pgfpathlineto{\pgfpoint{0.2\pgfutil@tempdima}{-0.7\pgfutil@tempdima}}
\pgfusepath{stroke}
\pgfpathcircle{\pgfqpoint{-0.4\pgfutil@tempdima}{-0.55\pgfutil@tempdima}}{.075\pgfutil@tempdima}
\pgfusepath{fill}
}
}
\makeatother
\begin{tikzpicture}[
circuit,
circuit declare symbol=neon lamp,
set neon lamp graphic={shape=neon lamp shape, draw, minimum size=1cm,transform shape}
]
\draw (0,0) to [neon lamp] (2,1);
\end{tikzpicture}
\end{document}
circuit declare symbol: Yes (section 29.2 "The Base Circuit Library"). The part about having to define the shape around the centre point: No (or I didn't find it), I deduced that from the offset that results otherwise.
– Jake
Feb 25 '13 at 09:02
circuit declare symbol only related to circuits? I mean, I have started to make a small set of chemical process symbols (valve, pumps, ...). May I use such command to place valve for example?
– Lionel MANSUY
Feb 25 '13 at 09:20
\begin{tikzpicture}[circuit] to activate that functionality.
– Jake
Feb 25 '13 at 09:27
I realize this question has long been forgotten. I also realize OP asked about Tikz, but still, it may be useful to have a PSTricks solution available in this context.
With pst-circ we have the settings and the mechanism to use: \newCircDipole. For example:
\newCircDipole{neonlamp}%
\makeatletter%
\def\pst@draw@neonlamp{%
\pscircle(0,0){0.5}
\psline[linewidth=2\pslinewidth](-0.15,-0.3)(-0.15, 0.3)
\psline[linewidth=2\pslinewidth](0.15,-0.3)(0.15, 0.3)
\psdot[dotsize=0.1](0,0.3)
\wire(-0.6,0)(-0.15,0)
\wire(0.6,0)(0.15,0)
\pnode(-0.6,0){dipole@1}
\pnode(0.6,0){dipole@2}%
}%
\makeatother
circuitikz, but I'm not sure it contains any gas discharge tube... – Count Zero Feb 21 '13 at 17:07circuitikz? How can this be if it doesn't provide all symbols? – Foo Bar Feb 21 '13 at 17:09