=head1 CONCEPTS
-Traditionally, in TikZ, there are two ways of grouping elements, or I<ops>, together :
+Traditionally, in TikZ, there are two ways of grouping paths together :
=over 4
=item *
-either as a I<sequence>, where each element is drawn in its own line :
+either as a I<sequence>, where each path is drawn in its own line :
\draw (0cm,0cm) -- (0cm,1cm) ;
\draw (0cm,0cm) -- (1cm,0cm) ;
=item *
-or as a I<path>, where elements are all drawn as one line :
+or as an I<union>, where paths are all drawn as one line :
\draw (0cm,0cm) -- (0cm,1cm) (0cm,0cm) -- (1cm,0cm) ;
This distinction is important because there are some primitives that only apply to paths but not to sequences, and vice versa.
-Figures are made of ops, path or sequence I<sets> assembled together in a tree.
+Figures are made of path or sequence I<sets> assembled together in a tree.
I<Modifiers> can be applied onto any set to alter the way in which it is generated.
The two TikZ concepts of I<clips> and I<layers> have been unified with the modifiers.
=head2 Containers
-=head3 C<< Tikz->path(@ops) >>
+=head3 C<< Tikz->union(@seq) >>
-Creates a L<LaTeX::TikZ::Set::Path> object out of the ops C<@ops>.
+Creates a L<LaTeX::TikZ::Set::Union> object out of the paths C<@kids>.
# A path made of two circles
- Tikz->path(
+ Tikz->union(
Tikz->circle(0, 1),
Tikz->circle(1, 1),
)
'even odd rule',
);
+=head3 C<< Tikz->join($connector, @kids) >>
+
+Creates a L<LaTeX::TikZ::Set::Chain> object that joins the paths C<@kinds> with the given C<$connector> which can be, according to L<LaTeX::TikZ::Set::Chain/connector>, a string, an array reference or a code reference.
+
+ # A stair
+ Tikz->join('-|', map [ $_, $_ ], 0 .. 5);
+
+=head3 C<< Tikz->chain($kid0, $link0, $kid1, $link1, ... $kidn) >>
+
+Creates a L<LaTeX::TikZ::Set::Chain> object that chains C<$kid0> to C<$kid1> with the string C<$link0>, C<$kid1> to C<$kid2> with C<$link1>, and so on.
+
+ # An heart-like shape
+ Tikz->chain([ 0, 1 ]
+ => '.. controls (-1, 1.5) and (-0.75, 0.25) ..' => [ 0, 0 ]
+ => '.. controls (0.75, 0.25) and (1, 1.5) ..' => [ 0, 1 ]
+ );
+
=head3 C<< Tikz->seq(@kids) >>
-Creates a L<LaTeX::TikZ::Set::Sequence> object out of the sequences, paths or ops C<@kids>.
+Creates a L<LaTeX::TikZ::Set::Sequence> object out of the sequences or paths C<@kids>.
my $bag = Tikz->seq($sequence, $path, $circle, $raw, $point);
->mod(Tikz->pattern(class => 'Dots'))
->layer('top');
+=head3 C<< Tikz->scale($factor) >>
+
+Creates a L<LaTeX::TikZ::Mod::Scale> object that scales the sets onto which it apply by the given C<$factor>.
+
+ my $circle_of_radius_2 = Tikz->circle(0 => 1)
+ ->mod(Tikz->scale(2));
+
=head3 C<< Tikz->width($line_width) >>
Creates a L<LaTeX::TikZ::Mod::Width> object that sets the line width to C<$line_width> when applied.
=head3 C<< Tikz->color($color) >>
-Creates a L<LaTeX::TikZ::Mod::Color>object that sets the line color to C<$color> (given in the C<xcolor> syntax).
+Creates a L<LaTeX::TikZ::Mod::Color> object that sets the line color to C<$color> (given in the C<xcolor> syntax).
# Paint the previous $thick_arrow in red.
$thick_arrow->mod(Tikz->color('red'));
L<Sub::Name>.
-L<Scope::Guard>.
-
L<Math::Complex>, L<Math::Trig>.
L<Scalar::Util>, L<List::Util>, L<Task::Weaken>.