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'm creating a flowchart using TikZ. You can see my code so far below.

But now I want to create an off page connector:

enter image description here

I don't have a clue how to implement this in my \tikzset.

Furthermore I want to create two flowcharts on one page, is this possible?
Lets say this flowchart below once on the right side of the page and once on the left side of the page.

Code

\documentclass[border=2pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes,arrows,shapes.multipart}
\usetikzlibrary{calc}

\tikzset{
%   offpageconnector/.style = {draw (1,0) -- (0,1) -- (-1,0) -- (0,-1) --     cycle, fill=orange!20},
    decision/.style   = {diamond, draw, fill=orange!20, text width=4.5em, text badly centered, node distance=3cm, inner sep=0pt},
    block/.style      = {rectangle, draw, fill=blue!20, text width=5em, text centered, minimum height=1cm},
    terminator/.style = {rectangle, rounded corners, draw, fill=blue!20, text width=5em, text centered, minimum height=1cm, node distance=3cm},
    line/.style       = {draw, -latex'},
    cloud/.style      = {draw, ellipse,fill=red!20, node distance=1.5cm, minimum height=2em},
    subroutine/.style = {draw,rectangle split, rectangle split horizontal, rectangle split parts=3,minimum height=1cm, rectangle split part fill={green!50}},
    connector/.style  = {draw,circle,node distance=3cm,fill=purple!20},
    data/.style       = {draw, trapezium,trapezium left angle=70,trapezium right angle=-70,minimum height=1cm,node distance=3cm,fill=olive!20},
    cloud/.style      = {draw, ellipse,fill=red!20, node distance=3cm, minimum height=2em}
}
\begin{document}
\begin{tikzpicture}[node distance = 2cm, auto]
\node [cloud] (start) {Start};
\node [block, below of=start,node distance=2cm] (init) {Init};
\node [block, below of=init,node distance=2cm] (1ebyteop) {$1^{e}$ byte ophalen};
\node [decision,below of=1ebyteop,node distance=2cm] (contreof) {EOF?};
\node [terminator, right of=contreof] (end1) {END};
\node [block, below of=contreof] (2ebyteop) {$2^{e}$ byte ophalen};
\node [decision,below of=2ebyteop,node distance=2cm] (contreof2) {EOF?};
\node [terminator, right of=contreof2] (end2) {END};
\node [subroutine, below of=contreof2, node distance=2cm] (sub1) {\nodepart{two} SUB1};
\node [subroutine, below of=sub1, node distance=2cm] (sub2) {\nodepart{two} SUB2};

% Draw edges
\path [line] (start) -- (init);
\path [line] (init) -- (1ebyteop);
\path [line] (1ebyteop) -- (contreof);
\path [line] (contreof) -- node {yes} (end1);
\path [line] (contreof) -- node {no}(2ebyteop);
\path [line] (2ebyteop) -- (contreof2);
\path [line] (contreof2) -- node {yes} (end2);
\path [line] (contreof2) -- node {no}(sub1);
\path [line] (sub1) -- (sub2);
\path [line] (sub2) |- ($(sub2.south west) - (0.7,0.7)$) |- (1ebyteop);
\end{tikzpicture}
\end{document}

Output

enter image description here

share|improve this question

2 Answers 2

up vote 4 down vote accepted

For the first question, you can use the shapes library and shape=signal with signal to=south.

For the second question, there are many options: one of them might be to use a scope with an appropriate xshift and another option would be to use minipages (one can put the minipages inside a figure environment to obtain a floating object with captions); the following example illustrates both approaches:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc,shapes,arrows,shapes.multipart}

\pagestyle{empty}

\tikzset{
page con/.style={shape=signal,draw,fill=olive!30, signal to=south,text width=5em,text height=1.5em,align=center}
}

\begin{document}

\begin{center}
\begin{tikzpicture}[node distance = 2cm, auto]
\node[page con] at (0,2) {test};
\begin{scope}[xshift=7cm]
\node[page con] at (0,2) {test};
\end{scope}
\end{tikzpicture}
\end{center}

\begin{figure}
\begin{minipage}{.5\textwidth}
\centering
\begin{tikzpicture}
\node[page con] at (0,2) {test};
\end{tikzpicture}
\caption{A test figure}
\label{fig:testa}
\end{minipage}%
\begin{minipage}{.5\textwidth}
\centering
\begin{tikzpicture}
\node[page con] at (0,2) {test};
\end{tikzpicture}
\caption{Another test figure}
\label{fig:testb}
\end{minipage}
\end{figure}

\end{document}

enter image description here

share|improve this answer

Code

\documentclass[border=2pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes,arrows,shapes.multipart}
\usetikzlibrary{calc}

\tikzset{
    offpageconnector/.style = {draw,
                               single arrow,
                               single arrow tip angle = 90,
                               single arrow head extend = 0pt,
                               shape border rotate=270,
                               text width=5em,
                               text badly centered,
                               fill=orange!20},
}
\begin{document}
\begin{tikzpicture}
    \node[offpageconnector] {test};
\end{tikzpicture}
\end{document}

Output

enter image description here

share|improve this answer

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.