% Dessiner un engrenage
\newcommand{\gear}[6]{(0:#2) \foreach \i [evaluate = \i as \n using {\i-1)*360/#1}] in {1,...,#1}{arc (\n:\n+#4:#2) {[rounded corners] -- (\n+#4+#5:#3) arc (\n+#4+#5:\n+360/#1-#5:#3)} --  (\n+360/#1:#2)} -- cycle (0,0) circle[radius = #6]}
% #1 : nombre de dents
% #2 : rayon à la base des dents
% #3 : rayon au sommet des dents
% #4 : "angle d'attaque" (finesse de la dent)
% #5 : séparation (angle) entre les dents
% #6 : rayon du cercle intérieur

\begin{tikzpicture}[
	block/.style = {text width = 60mm, minimum height = 10mm, align = center, outer sep = 8mm},
	comment/.style = {text width = 55mm, align = center, font = \sffamily\huge},
	node distance = 20mm,
	link/.style = {->, > = Straight Barb, line width = 8pt}
]
% Blocs
\node[block] (etapeA) {\resizebox{!}{\linewidth}{
\begin{tikzpicture}
	\draw[line join = bevel, line width = 5pt] rectangle (2,3);
	\draw[line width = 3pt] (0.5,0.5) --++ (1,0) (0.5,1) --++ (1,0) (0.5,1.5) --++ (1,0);
	\node[anchor = center, text width = 15mm, align = center, font = \sffamily\bfseries\Large] at (1,2.25) {Code};
\end{tikzpicture}
}
};
\node[block, right = of etapeA] (etapeB) {\resizebox{!}{\linewidth}{
	\begin{tikzpicture}
	\begin{scope}[rotate = 16]
		\fill[even odd rule] \gear{8}{1.8}{2.5}{13}{8}{1};
	\end{scope}
	\begin{scope}[rotate = 13, scale = 0.5, shift = {(45mm,-60mm)}]
		\fill[even odd rule] \gear{6}{1.8}{2.5}{21}{8}{1};
	\end{scope}
	\begin{scope}[rotate = -25, scale = 0.5, shift = {(25mm,70mm)}]
		\fill[even odd rule] \gear{6}{1.8}{2.5}{21}{8}{1};
	\end{scope}
	\end{tikzpicture}
}
};
\node[block, right = of etapeB] (etapeC) {\resizebox{!}{\linewidth}{
	\begin{tikzpicture}
	\draw[line join = round, line width = 5pt] (0,0) --++ (0,3) --++ (1.5,0) --++ (0.5,-0.5) -- (2,0) -- cycle (1.4,3) --++ (0.1,0) --++ (0.5,-0.5) --++ (0,-0.1) --++ (-0.6,0) --++ (0,0.6) -- cycle;
	\node[anchor = center, text width = 15mm, align = center, font = \sffamily\bfseries\Large] at (1,1.5) {PDF};
	\end{tikzpicture}
}
};

% Commentaires
\node[comment, below] (commentA) at (etapeA.south) {Rédaction \linebreak (en \LaTeX{})};
\node[comment, below] (commentB) at (etapeB.south) {Compilation \linebreak (moteur \LaTeX{})};
\node[comment, below] (commentC) at (etapeC.south) {Document prêt \linebreak (fichier PDF)};

% Liens
\draw[link] (etapeA) -- (etapeB);
\draw[link] (etapeB) -- (etapeC);
\end{tikzpicture}