# NAME

`Math::Geometry::Construction::Draw::TikZ`

- TikZ output

# VERSION

Version 0.021

# SYNOPSIS

```
use Math::Geometry::Construction;
my $construction = Math::Geometry::Construction->new;
my $p1 = $construction->add_point('x' => 100, 'y' => 150);
my $p2 = $construction->add_point('x' => 130, 'y' => 110);
my $l1 = $construction->add_line(extend => 10,
support => [$p1, $p2]);
my $tikz = $construction->as_tikz(width => 8,
height => 3,
view_box => [0, 0, 800, 300],
svg_mode => 1);
my (undef, undef, $body) = Tikz->formatter->render($tikz);
my $string = sprintf("%s\n", join("\n", @$body));
print <<END_OF_TEX;
\\documentclass{article}
\\usepackage{tikz}
\\begin{document}
$string\\end{document}
END_OF_TEX
```

# DESCRIPTION

This class implements the Math::Geometry::Construction::Draw interface in order to generate `TikZ`

code to be used in `LaTeX`

. It is instantiated by the draw method in `Math::Geometry::Construction`

.

The output created by this class will be a `LaTeX::TikZ::Set::Sequence`

object. See `SYNOPSIS`

.

Key/value pairs in the style settings of lines, circles etc. are translated into `raw_mod`

calls

```
while(my ($key, $value) = each(%style)) {
$raw->mod(TikZ->raw_mod("$key=$value"));
}
```

See LaTeX::TikZ if you want to know what this code exactly does. Anyway, the important part is that you should be able to use any modifier that `TikZ`

understands. See also `svg_mode|/svg_mode`

.

# INTERFACE

## Public Attributes

### svg_mode

Defaults to `0`

. If set to a true value, `SVG`

style attributes are mapped to `TikZ`

attributes internally. The idea behind this is that you might want to use the same construction including style settings for both `SVG`

and `TikZ`

export. This feature is experimental and will probably never cover the full `SVG`

and/or `TikZ`

functionality.

Currently, only `stroke`

is mapped to `color`

, and this is done literally. It will therefore only work for named colors which exist in both output formats.

### math_mode

Defaults to `0`

. If set to a true value, all text is printed in `LaTeX`

's math mode. Again, this is to enable the same code to be used for `TikZ`

along side other output formats while still typesetting labels in math mode.

## Methods

See Math::Geometry::Construction::Draw.

# SEE ALSO

# AUTHOR

Lutz Gehlen, `<perl at lutzgehlen.de>`

# LICENSE AND COPYRIGHT

Copyright 2011,2013 Lutz Gehlen.

This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.

See http://dev.perl.org/licenses/ for more information.