+=head2 C<render @sets>
+
+Processes all the L<LaTeX::TikZ::Set> objects given in C<@sets> to produce the actual TikZ code to insert in the LaTeX file.
+First, all the mods applied to the sets and their subsets are collected, and a declaration is emitted if needed for each of them by calling L<LaTeX::TikZ::Mod/declare>.
+Then, the image code is generated for each set.
+
+This method returns a list of array references :
+
+=over 4
+
+=item *
+
+The first one contains the header lines to include between the C<\documentclass> and the C<\begin{document}>.
+
+=item *
+
+The second one contains the mod declaration lines to put inside the document, between C<\begin{document}> and C<\end{document}>.
+
+=item *
+
+Finally, there's one array reference for each given TikZ set, which contain the lines for the actual TikZ pictures.
+
+=back
+
+The lines returned by L</render> don't end with a line feed.
+
+ my ($header, $declarations, $set1_body, $set2_body) = $formatter->render($set1, $set2);
+
+ open my $tex, '>', 'test.tex' or die "open('>test.tex'): $!";
+
+ print $tex "$_\n" for (
+ "\\documentclass[12pt]{article}",
+ @$header,
+ "\\begin{document}",
+ "\\pagestyle{empty}",
+ @$declarations,
+ "First set :"
+ "\\begin{center}",
+ @$set1_body,
+ "\\end{center}",
+ "Second set :"
+ "\\begin{center}",
+ @$set2_body,
+ "\\end{center}",
+ "\\end{document}",
+ );