Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

I want to have a XOR node in my TikZ diagram, but couldn't find any available symbol, therefore made one myself, but I am not very happy with it. I used the example from how to draw XOR gate symbol as a node in tikz? as basis.

\tikzstyle{XOR} = [draw,circle]

And use it as follows:

 \node [XOR] {\large +};

However, there is always a padding around the +. I want the + to 'connect' with the circle.

Here my MWE:

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes,arrows,fit,calc,positioning,automata}
\begin{document}

\tikzstyle{XOR} = [draw,circle]
\tikzstyle{line}    = [draw, -latex']

\begin{tikzpicture}[auto,>=latex', scale = 1, transform shape]
    \tikzstyle{line}=[draw, -latex']

    \node (XOR-aa)[XOR] {\large +};


    \node [above of=XOR-aa,node distance=1.5cm,text width=1.5cm,anchor=south,align=center] (bla) {Bla};

    \node [right of=XOR-aa,node distance=3cm,text width=1.5cm,anchor=east,align=center] (Blob) {Blob};

    \node [left of=XOR-aa,node distance=3cm,text width=1.5cm,anchor=west,align=center] (blubb) {Blubb};

    \path[line] (XOR-aa) edge (Blob)
                (bla) edge (XOR-aa)
                (blubb) edge (XOR-aa);
\end{tikzpicture}
\end{document}
share|improve this question
2  
Wouldn't \node (XOR-aa) {$\displaystyle\oplus$}; be what you need? –  egreg Oct 8 '12 at 15:19
    
I think your question is similar to how to draw XOR gate symbol as a node in tikz?, although Claudio's answer is not there. –  Ignasi Oct 8 '12 at 15:58
    
Well, I don't know if anyone who voted to close my answer, actually read my question? I even pointed to the other thread, but in my case the XOR-gate is connected to the circle. Oh well. Claudio answered it nonetheless. –  cherrung Oct 9 '12 at 2:28
    
@egreg Wow. I was actually looking for that symbol and couldn't find it. –  cherrung Oct 9 '12 at 2:31
1  
I voted to reopen too. Notice indeed that in the previous question how to draw XOR gate symbol as a node in tikz? there's no mention about how to draw the XOR symbol. Here, instead, the question is clearly: how to draw an XOR symbol such that the + sign is connected to the external circle? –  Claudio Fiandrino Oct 9 '12 at 7:01
show 4 more comments

1 Answer 1

up vote 8 down vote accepted

The best idea I think is to define the XOR in such a way that automatically the + sign is inside the circle. One possibility is:

\tikzset{XOR/.style={draw,circle,append after command={
        [shorten >=\pgflinewidth, shorten <=\pgflinewidth,]
        (\tikzlastnode.north) edge (\tikzlastnode.south)
        (\tikzlastnode.east) edge (\tikzlastnode.west)
        }
    }
}

The complete example:

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes,arrows,fit,calc,positioning,automata}
\begin{document}

\tikzset{XOR/.style={draw,circle,append after command={
        [shorten >=\pgflinewidth, shorten <=\pgflinewidth,]
        (\tikzlastnode.north) edge (\tikzlastnode.south)
        (\tikzlastnode.east) edge (\tikzlastnode.west)
        }
    }
}
\tikzset{line/.style={draw, -latex',shorten <=1bp,shorten >=1bp}}

\begin{tikzpicture}[auto]

    \node (XOR-aa)[XOR,scale=1.2] {};


    \node [above of=XOR-aa,node distance=1.5cm,text width=1.5cm,anchor=south,align=center] (bla) {Bla};

    \node [right of=XOR-aa,node distance=3cm,text width=1.5cm,anchor=east,align=center] (Blob) {Blob};

    \node [left of=XOR-aa,node distance=3cm,text width=1.5cm,anchor=west,align=center] (blubb) {Blubb};

    \path[line] (XOR-aa) edge (Blob)
                (bla) edge (XOR-aa)
                (blubb) edge (XOR-aa);
\end{tikzpicture}
\end{document}

Notice in particular how the line is defined:

\tikzset{line/.style={draw, -latex',shorten <=1bp,shorten >=1bp}}

The shorten allows that the arrows does not touch the XOR: without this, a departing arrow could be confused with the the +.

The result is:

enter image description here

The approach allows to scale the XOR symbol very easily without problems; for example using:

\node (XOR-aa)[XOR,scale=2.5] {};

in the previous MWE leads to:

enter image description here

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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