5

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).

5
+100

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}
  • Thanks; for my information, are this kind of information in the Tikz manual? – Lionel MANSUY Feb 25 '13 at 8:54
  • @LionelMANSUY: The part about 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 9:02
  • @Jack: is 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 9:20
  • @LionelMANSUY: Yes, that'll work as well. You just need to make sure to use \begin{tikzpicture}[circuit] to activate that functionality. – Jake Feb 25 '13 at 9:27
  • @Jake, the little circle should be filled. – Luigi Feb 25 '13 at 10:36
6

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}

enter image description here

0

A PSTricks Solution

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

neonlamp

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.