# Making concept maps in Latex

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.

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

Thank you

• In my experience, i use a tool like Inkscape or Freeplane to generate the actual map, because the maps are typically parts of larger maps and are much easier to edit in the external tools. I then just export to PDF and then call includegraphics. Is there a particular reason you want/need to do it within TeX? – kabZX May 8 '16 at 9:25
• I wanted to make notes and type some equations into the nodes, plus I just assumed that latex would be able to generate some very nice simple maps in comparison to something like word, which was what initially came to mind. Also, I thought something pre formatted via typing as opposed to drawing appealed to me So my first thought was just to generate through TeX – PutsandCalls May 8 '16 at 9:42
• @kabZX I personally think the output I have right now is quite nice but just need a bit of tweaking in the code for double arrows and possibly different shapes, which I am not that familiar with. – PutsandCalls May 8 '16 at 9:45
• <-> will give you a double arrow. The shapes.geometric library provides additional geometric shapes, including regular polygons. But you will find some possibly appealing shapes there, especially if you are not really set on finding precisely an irregular hexagon. (Though I think one of the fancy rectangles there comes close, even if not quite equivalent.) – cfr May 8 '16 at 12:39
• Note that there is a dedicated mind-mapping library, although it has quite a distinctive style. – cfr May 8 '16 at 14:22

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}


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}
\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},
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}


• @cfr Please, could you tell me where you found the first concept map you showed here. It looked like a map I made with exactly those french concepts : notes, recherches... and those nodes : donne lieu, modifie... Could it be possible that I saw that map here and copied it? I can't believe it ?! – domi Feb 2 '17 at 15:29
• @domi The code is from the question. – cfr Feb 2 '17 at 16:36
• @cfr ...oups... I did not remember it. Thanks. – domi Feb 2 '17 at 17:43