[Tex/LaTex] Making concept maps in Latex

mindmapstikz-pgftikz-trees

I found a very nice concept map which was adapted from beamer here: https://tex.stackexchange.com/questions/235414/drawing-concept-maps-in-beamer and I was hoping to apply something like this to a tex document.

So far what I have is as follows:

\documentclass{article}

\usepackage{graphicx}
\usepackage{tikz}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[french]{babel}
\usepackage{lmodern}
\usetikzlibrary{shapes,arrows,positioning}
\usetikzlibrary{matrix}

\begin{document}



\begin{tikzpicture}[->,>=stealth',shorten >=1pt,auto,node distance=3cm,
thick,main node/.style={circle,fill=gray!20,draw,font=\sffamily\Large\bfseries}]

\node[main node] (1) {{\scriptsize { Problème}}};
\node[main node] (2) [below of=1] {{\scriptsize { Recherches}}};
\node[main node] (3) [right of=2] {{\scriptsize { Notes}}};
%\node[main node] (4) [right of=3] {{\scriptsize { Hypot.}}};

\path[every node/.style={font=\sffamily\small}]
(1) edge node [left] {{\tiny donne lieu}} (2)
(2) edge node [below] {\begin{tiny} produisent\end{tiny}} (3) 
(3) edge node [right] {{\tiny modifie}} (1);
\end{tikzpicture}




\end{document}

That being said, what I wanted to know is how I would be able to make different shapes (ie: hexagons or squares) in addition to the current circles. Also, I was wondering if it was possible to be make a double sided arrow connecting the nodes. I am ultimately looking to produce a concept map that looks like the following, for example.

enter image description here

Does anyone have any advice ? I would greatly appreciate any help.

Thank you

Best Answer

Look at shapes.geometric, shapes.misc etc. for additional shapes. <-> produces a double-arrow.

For example:

\documentclass[tikz,border=10pt,multi]{standalone}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[french]{babel}
\usepackage{lmodern}
\usetikzlibrary{shapes.misc,shapes.geometric,arrows,positioning}
\begin{document}
\begin{tikzpicture}[->,>=stealth',shorten >=1pt,auto,node distance=3cm, thick,main node/.style={circle,fill=gray!20,draw,font=\sffamily\Large\bfseries}]
  \node[main node,  chamfered rectangle] (1) {{\scriptsize { Problème}}};
  \node[main node, ellipse] (2) [below of=1] {{\scriptsize { Recherches}}};
  \node[main node] (3) [right of=2] {{\scriptsize { Notes}}};
  %\node[main node] (4) [right of=3] {{\scriptsize { Hypot.}}};
  \path[every node/.style={font=\sffamily\small}]
  (1) edge node [left] {{\tiny donne lieu}} (2)
  (2) edge [<->] node [below] {\begin{tiny} produisent\end{tiny}} (3)
  (3) edge node [right] {{\tiny modifie}} (1);
\end{tikzpicture}
\end{document}

double-arrow and fancy shapes

For the particular picture you are aiming at, I would probably think about using the chains library for the structure and pgf-blur for the shadows. I'd also define some styles for convenience and consistency.

For example:

\documentclass[tikz,border=10pt,multi]{standalone}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usetikzlibrary{shapes.misc,shapes.geometric,arrows.meta,positioning,shadows.blur,chains,scopes}
\begin{document}
\begin{tikzpicture}
  [
    ->,
    >=Stealth,
    shorten >=1pt,
    shorten <=1pt,
    thick,
    main node/.style={fill=white, draw, font=\sffamily\scriptsize\bfseries, blur shadow, align=center},
    hex/.style={main node, chamfered rectangle},
    ell/.style={main node, ellipse},
    blur shadow={shadow opacity=25},
    start chain=main going below,
  ]
  \node [on chain, ell] {Limits};
  {[start branch=limits up going {at=(\tikzchainprevious), shift=(30:2)}]
    \node [on chain, hex, join=by ->] {Examples};
  }
  {[start branch=limits up going {at=(\tikzchainprevious), shift=(-30:2)}]
    \node [on chain, hex, join=by ->] {Non-\\Examples};
  }
  \node [on chain, ell, join=by {->}] {Continuity\\(Limits)};
  \node [on chain, ell, join=by <->] {Continuity\\(Ep-Delta)};
  {[start branch=ep going {at=(main-3), shift=({60-(\tikzchaincount-1)*20}:3)}, every on chain/.append style={join={with main-3 by ->}}]
    \node [on chain] {};
    \node [on chain] {};
    \node [on chain] {};
    \node [on chain, hex] {Examples};
    \node [on chain, hex] {Non-\\Examples};
  }
\end{tikzpicture}
\end{document}

chains and blurred shadows